命令 | 功能 | 注释举例 |
add | 加 | ADD DATA[SI],AL 向data的第si位加 AL的值 |
sub | 减 | SUB AL,37h |
dec | 减 -1 | |
inc | 加 +1 | |
mov | 移动、获取 | MOV BX,BUFFER LEA BX,BUFFER = MOV BX. OFFSET BUFFER mov送值,lea送地址 |
LEA | 目的地址传送指令 取有效地址指令 | |
JMP | 无条件转移 |
向后引用的标号可以不写运算符
SHORT
target :… ;先定义标号 target
: ;相对位移量不超过-128~+
127
JMP target ;后引用标号 target
向前引用的标号应当写明运算符
SHORT
JMP SHORT target
;先引用标号
target
: ;相对位移量不超过-128~+
127
target :… ;此处定义标号 target
|
JNE/JNZ JS JNS JP/JPE JNP/JPO JO JNO JC JNC JB/JNAE JAE/JNB JA/JNBE JBE/JNA JG/JNLE JGE/JNL JL/JNGE JLE/JNG JCXZ |
不等于
/
非零转移
JNE/JNZ (ZF)
=
1
负转移
JS (SF)
=
1
正转移
JNS (SF)
=
0
偶转移
JP/JPE (PF)
=
1
奇转移
JNP/JPO (PF)
=
0
溢出转移
JO (OF)
=
1
不溢出转移
JNO (OF)
=
0
进位转移
JC (CF)
=
1
不进位转移
JNC (CF)
=
0
低于
/
不高于或不等于转移
JB/JNAE (CF)
=
1
无符号数
高于或等于
/
不低于转移
JAE/JNB (CF)
=
0
无符号数
高于
/
不低于或不等于转移
JA/JNBE (CF)
=
0
且
(ZF)
=
0
无符号数
低于或等于
/
不高于转移
JBE/JNA (CF)
=
1
或
(ZF)
=
1
无符号数
大于
/
不小于或不等于转移
JG/JNLE (SF)
=
(OF)
且
(2F)
=
0
带符号数
大于或等于
/
不小于转移
JGE/JNL (SF)
=
(OF)
带符号数
小于
/
不大于或不等于转移
JL/JNGE (SF)
≠
(OF)
且
(ZF)
=
0
带符号数
小于或等于
/
不大于转移
JLE/JNG (SF)
≠
(OF)
或
(ZF)
=
1
带符号数
CX
等于零转移
JCXZ (CX)
=
0
| |
| ||
HLT | 停止 | |
NEG | 求负数或绝对值 | |
CMP | 比较 |
执行比较指令
CMP 后,被比较的两个操作数内容均保持不变,而比较结果反映在标志寄存器中
|
MUL/IMUL | 有符号/无符号乘法 | |
DIV/IDIV | 无符号除法/带符号 | |
CBW | 字节扩展 | change byte(8bit) to word(16bit) |
CWD | 字扩展 | change word to double word(32bit) |
ADD | 与 | |
OR | 或 | |
XOR | 异或 | |
NOR | 非 | |
SHL | 左移 | shift left |
SHR | 右移 | 0100 -> 0010 |
SAR | 算数右移 | 0100 ->0110 |
ROL/RCL | 循环左移 | |
ROR/RCR | 循环右移 |
循环控制指令
loop 本指令的操作是先将 CX 的内容减 1,如结果不等于零,则转到指令中指定的短标号处;否则,顺序执行下一条指令。
loope/loopz 本指令的操作是先将 CX 的内容减 1,如结果不等于零,且零标志(ZF)=1 则转移到指定的短标号。 值等于零的情况
loopne/loopnz 本指令的操作是先将 CX 的内容减 1,如结果不等于零,且零标志(ZF)=0 则转移到指定的短标号。值不等于零的情况
过程调用指令
call 相当于调用一个固定的函数
过程返回指令
ret 类似于函数里的return
串操作指令共有以下五条:串传送指令(MOVS)、串装入指令(LODS)、串送存指令(STOS)、串比较指令(CMPS)和串扫描指令(SCAS)。
一般情况下,汇编语言的语句可以由 1~4 部分构成:
[名字:] 助记符 [操作数] [;注释]
其中带方括号的部分表示任选项,既可以有,也可以没有。如:
LOOPER: MOV AL,DATA[SI] ;取一个字节数
DATAl DB 0F8H,60H,0ACH,74H,3BH ;定义数组