一.算术运算指令
指令 | 模板 | 具体作用 |
---|---|---|
add | add ax,bx | 将bx+ax的值储存在ax中 |
sub | sub ax,bx | 将ax-bx的值存在ax中 |
inc | inc bx | 将bx的值加1,不影响flag寄存器相关位置 |
dec | dec bx | 将bx的值减1,…… |
mul | mul ax,bx | 将ax*bx的值存在ax中,如果是32位乘法则要将高位字节储存与dx中,低位储存于ax中,16位大差不差 |
div | div ax,bx | ax/bx的值储存于ax…… |
adc | adc ah,bh | (ah)=(bh)+(ah)+ CF |
sbb | sbb ax,bx | (ax)=(ax)-(bx)- CF |
cmp | cmp ax,bx | 将ax-bx但不储存在任何地方只影响flag寄存器的相关位置,用于判断两数大小 |
二.逻辑运算指令
指令 | 模板 | 具体作用 |
---|---|---|
and | and ax,bx | 用于定向更改二进制数的某位,如字母的大小写变换,只有两边同为1时结果为1 |
or | or ax,bx | 只有两边都为0时结果为0,其它为1 |
xor | xor ax,bx | 同为1或0结果为0或者为1 |
not | not al | 取al值的反码 |
三.目的地址传送指令
指令 | 模板 | 具体作用 |
---|---|---|
lea | lea bx,dx:[98H] | 把偏移地址存到bx,相当于C语言中的&符号 |
lds | lds si,string | 把段地址:偏移地址存到ds:si中 |
les,lfs,lgs,lss | …… | …… |
四.通用数据传送指令
指令 | 模板 | 具体作用 |
---|---|---|
mov | mov ax,bx | 将bx中的数据覆盖到ax中 |
push | push ax | 将ax中的值压入栈中 |
pop | pop ax | 将栈中的值取出进ax中 |
五.程序转移指令(长转移)
指令 | 模板 | 具体作用 |
---|---|---|
jmp | jmp ax,bx | 无条件跳转指令,根据偏移量进行跳转 |
call | call s | 将当前地址推入栈中,并跳转到s处 |
ret | ret | 将栈中地址弹出至ds:ip并跳转 |
条件转移指令(短转移)
指令 | 模板 | 具体作用 |
---|---|---|
je/jz | je/jz s | 若相等则跳转 |
jne/jnz | …… | 若不相等则跳转 |
jb/jl | …… | 若小于则跳转 |
ja/jg | …… | 若大于则跳转 |
jge | …… | 若大于等于则跳转 |
jle | …… | 若小于等于则跳转 |
循环控制指令
指令 | 模板 | 具体作用 |
---|---|---|
loop | loop s | 消耗cx中的值,并跳转至s处 |
jcxz | jcxz s | 当cx中值为0时跳转至s |
jecxz | …… | …… |