一些汇编指令

AX Accumulator   用累加器进行的操作 输入输出 乘除 操作
BX 基址寄存器 (Base Register)

CX 计数寄存器 (Count Register)常用于 循环 计数器  在 位操作中 要用 CL来指明 位移的位数
DX 
数据寄存器(Data Register)  在 进行 双字节 运算时  也可以 存放 io 的端口地址
MOV 数据传送指令

ADD 算数指令
编程环境 Masm  调试 工具 Debug
Debug  cpu 各种 寄存器 的 内容 内存的情况
在机器码中 跟踪程序
Debug 命令
R: 查看 或者改变 cpu 寄存器的 内容
D: 以 十六进制的形式 显示
一块内存区域的内容
E:  改写 内存中的内容
A:  以 汇编的 的格式 在 内存中写入 一条
机器指令
U:  将机器中的汇编指令 翻译成 汇编指令
T:  执行 一条机器指令
Q:  推出
Debug
segment
每  16  字节  为 一段 paragraph
每段 可达
64k
段的大小 是 任意的
提供 段寄存器的 称为  段寄存器
8086cpu  有四个 CS DS SS
ES
CS: 代码段寄存器
DS: 数据段寄存器
SS: 堆栈段寄存器
ES: 附加段寄存器
IP 指令 指针 寄存器
CS
和IP 当前要读取指令的地址
CS:IP
从cs ip 只想到  的 内存单元中 读取指令写到 指令 缓冲 器
ip=ip+
所读取指令的长度 从而指向 下一条指令
能够 改变 cs ip的 内容指令 被称为 转移指令
一个 转移指令  jmp 指令
jmp
段地址 : 偏移地址
含义: 段地址 修改 cs  偏移地址 修改 ip

jmp  寄存器  
用指令寄存器的 内容修改 ip
cs 的值是 不变的
sub  目的操作数  又称 源操作数

D 段地址
:偏移地址  单元开始的 128个 内存单元的内容
d 段地址 :起始偏执 结尾偏执

E: 改写内村中的
内容
内存单元的表示
方阔方括号的数据表示 内存大 偏移地址
ds 存放 数据单的 段地址
数据段 专门存放数据的段
8086
必须通过 寄存器送入到 寄存器
mov  寄存器 内存单元地址
取数据懂啊寄存器
mov  寄存器  数据

mov 寄存器 寄存器
mov 寄存器 内存单元
mov 内存单元 寄存器
mov 段寄存器 寄存器
mov 寄存器
段寄存器
mov  内存单元  段寄存器
mov  段寄存器 和 内存单元
段寄存器 ss 存放栈顶的 段地址

栈顶指针 寄存器 sp 存放栈顶的偏移地址
ss:sp  指向 栈顶的 偏移地址
栈段 stack
segment
当做栈空间用的的段地址 称为 栈段 stack segment
栈段 继承了 栈的属性
长度 小于 64k 
起始 地址为 16的倍数
段是 一种 逻辑上的划分
数据段 :存放数据的段
代码段 : 存放代码的段
栈段: 当做栈空间的的段

理解字在 内存中的 存储
使用 mov  在 寄存器和内存中 传递数据 包括 字节的传送 和字的传送
包括 入栈 和
出栈
理解 栈顶越界的问题

汇编程序的结构
编译 连接 执行

一些汇编指令,布布扣,bubuko.com

时间: 2024-08-25 15:05:09

一些汇编指令的相关文章

汇编指令解析

X86架构 [原创]X86汇编之指令格式解析 [原创]汇编指令之OpCode快速入门 [原创]X64汇编之指令格式解析 ARM架构:

Android 图解逆向工程中ARM常用汇编指令(一)

我们走得太快,灵魂都跟不上了. 微小的幸福就在身边,容易满足就是天堂. 在逆向和爆破中我们经常会在IDA中接触到汇编,一般做安卓的不会太了解VB回编等,不太了解的同学可以先查看上篇文章<Android ARM常用的汇编指令合集> 再来继续我们的学习,我们先来看张图. 这个view里面有 PUSH/LDR/SUB/MOVS/BLX/SUBS/BEQ/CMP ,这些差不多都是常见的,不过也不需要看得懂,理解这个指令即可,接下来我们就来分析下这些指令分别有什么作用吧. 先引入 概念性 东西,免得大家

如何实现对ARM汇编指令的调试?

学习ARM汇编语言时,少不了对ARM汇编指令的调试.作为支持多语言的调试器,gdb自然是较好的选择.调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控.为了在x86平台上执行ARM指令,可以使用qemu模拟器执行ARM汇编指令,具体的调试方法,一起来看看吧. 一.准备ARM汇编程序 首先,我们构造一段简单的ARM汇编程序作为测试代码main.s. .globl _start _start: mov R0,#0 swi 0x00900001 以上汇编指

汇编指令速查

指令 功能 AAA 调整加 AAD 调整除 AAM 调整乘 AAS 调整减 ADC 进位加 ADD 加 AND 与 ARPL 调整优先级 BOUND 检查数组 BSF 位右扫描 BSR 位左扫描 BSWAP 交换字节 BT 位测试 BTC 位测试求反 BTR 位测试清零 BTS 位测试置一 CALL 过程调用 CBW 转换字节 CDQ 转换双字 CLC 进位清零 CLD 方向清零 CLI 中断清零 CLTS 任务清除 CMC 进位求反 CMOVA 高于传送 CMOVB 低于传送 CMOVE 相等

汇编指令mov、add、sub、jmp

mov:寄存器,数据 mov:寄存器,寄存器 mov:寄存器,内存单元 mov:段寄存器,内存单元 mov:内存单元,寄存器 mov:内存单元,段寄存器 mov:段寄存器,寄存器 mov:寄存器,段寄存器 add:寄存器,数据 add:寄存器,寄存器 add:内存单元,寄存器 add:寄存器,内存单元 sub:寄存器,数据 sub:寄存器,寄存器 sub:内存单元,寄存器 sub:寄存器,内存单元 jmp:段地址:偏移地址  用段地址修改CS 用偏移地址修改IP jmp:寄存器,只用寄存器的内容

查看汇编指令的二进制代码

今天在尝试ptrace设置断点达时候想知道syscall这条汇编指令对应达二进制码是多少. 百度无果之后在stackoverflow上看到这么个问题 http://stackoverflow/questions/9815448/jmp-instruction-hex-code 里边哥们问jmp对应的二进制码是多少,大神是这么回答的 echo 'asm("mov $400835, %rax\n jmp %rax\n");' >a.c gcc -c a.c objdump -d a.

【嵌入式Linux+ARM】ARM体系结构与编程(ARM汇编指令)

自己的一些简单的总结,也是最常用的ARM汇编指令,之后也会不断的补充完善. 1. 汇编系统预定义的段名 .text    @代码段 .data   @初始化数据段 .bss    @未初始化数据段 需要注意的是,源程序中.bss段应该在.text之前. 2.定义入口点 汇编程序的缺省入口是 start标号,用户也可以在连接脚本文件中用ENTRY标志指明其它入口点. .text .global _start _start: 3 .word用法 word expression就是在当前位置放一个wo

汇编指令:push、pop

8086CPU出栈入栈都是以字为单位进行的. push ax 由一下两步完成 1.SP=SP-2 2.将ax中的内容送入SS:SP指向的内存单元 pop ax 1.将SS:SP指向的内存单元中的内容送入ax 2.SP=SP+2 push 寄存器 pop 寄存器 push 段寄存器 pop 段寄存器 push 内存单元 pop 内存单元 只给出内存单元的偏移地址,段地址在指令执行时从ds中获得. 汇编指令:push.pop,布布扣,bubuko.com

带注释的汇编指令大全

一.数据传输指令 ─────────────────────────────────────── 它们在存贮器和寄存器.寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节.  如:MOV eax,11  意思:eax=11 MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX