cs:ip:决定cpu读取命令物理地址。
ss:sp:始终指向栈顶,决定栈的机制。
ds:决定cpu读取数据的基础地址。
ax:通常用来将数据传递给段寄存器。
cx:loop命令循环次数取决于cx。
dx:可作为累加结果的寄存器。
bx si di bp:可以通过[]表示数据。
dw命令:dw命令是写入数据的命令,dw命令从cs:0开始存储后面的数据。(16bit)
dw 0123h, 0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
db命令:db命令是将数据转化为ascii码,从cs:0开始写入。(8bit)
db ‘abcd’
dd命令:定义双字节数据。(32bit)
dd 1
逻辑或算术运算
add:做加法
sub:做减法
div:做除法
mul:做乘法
or:或运算
and:和运算
循环指令
loop:循环次数取决于cx。
s: …
loop s
rep指令:循环次数取决与cx。
rep…
传送指令
mov:改变寄存器
push:入栈
pop:出栈
jmp:改变cs ip
jcxz:有条件的转移指令,属于段内短转移
ret:(栈中获取)修改ip的内容,实现段内近转移
retf:(栈中获取)修改cs 和 ip 的内容,实现段转移
call:传送指令
段内短转移
指令 条件
jcxz:cx=0
je : zf=1
jne:zf=0
jb : cf=1
jnb:cf=0
ja : cf=0 且 zf=0
jna:cf=1 或 zf=1
adc指令:带进位加法指令,利用cf位
sbb指令:带借位减法指令,利用cf位
cmp指令:比较指令
cld指令:df=0
std指令:df=1
pushf:将标志存储器数据压栈。
popf:将栈中数据存入标志存储器。
movsb:传送字节
movsw:传送字
dup:重复数据。
db/dw/dd 重复次数 dup (重复的数据)
offset:获取编译器处理符号(标号)的偏移地址。
offset 编译器处理符号(标号)
ZF标志:零标志位,记录相关指令执行后结果是否为零,结果是零zf=1,不是零zf=0
PF标志:奇偶标志位,记录相关指令执行后结果中1的个数是否为偶数,1的个数为偶数pf=1,为奇数pf=0
SF标志:符号标志位,记录相关指令执行后结果是否为负,结果为负sf=1,非负sf=0
CF标志:进位标志位,(无符号数运算)记录运算结果的最高有效位向更高位的进位值,或借位值。
OF标志:溢出标志位,记录(有符号数)运算的结果是否发生溢出,如果发生溢出of=1,没有溢出of=0
DF标志:方向标志位,在串处理指令中,控制si,di增减。df=0 每次操作后si di递增,df=1 每次操作后si di递减