一.算术运算指令
| 指令 | 模板 | 具体作用 |
|---|---|---|
| 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 | …… | …… |