汇编语言常用指令
指令格式 | 说明 |
数据传送指令 | |
MOV | 不能实现存储单元之间的数据传送 |
XCHG | 交换两寄存器或寄存器和存储单元的数据 |
LEA | 计算单位的偏移量,送入指定寄存器 |
PUSH | 压栈操作,可跟寄存器、存储单元 |
POP | 弹出数据,注意两者顺序 |
标志传送指令 | 对AH操作 |
指令格式 | 说明 |
算数运算指令 | |
加法指令 | |
ADD | |
ADC | 计算时,加上CF位 |
INC | 自加1 |
减法指令 | |
SUB | |
SBB | 计算时,减去CF位 |
DEC | 自减1 |
CMP | 两数相减,目的操作数不能是立即数,结果只影响标志位,不送入目的地址 |
乘法指令 | |
MUL | 无符号字节或字数据相乘,与AL(AX)相乘,乘积为(双)字类型,存放在AX(DX ,AX)中 |
IMUL | 有符号数相乘 |
除法指令 | |
DIV <src> | 无符号字节或字数据相除,AX(DX,AX)的内容除以src的内容,商放在AL(AX)中,余数放在AH(DX)中。 |
IDIV | 有符号数相除 |
指令格式 | 说明 |
位操作指令 | |
逻辑运算 | |
NOT | |
AND | |
汇编语言结束指令 OR | |
XOR | |
TEST | 两数按位相与,结果只影响标志位,不送入目的地址 |
移位指令 | |
SHL/SAL | 左移,高位存入CF,低位补零,可与CL搭配使用 |
SHR/SAR | 右移,低位存入CF,高位补零,可与CL搭配使用 |
ROL,ROR | 循环左/右移,最高/低位移到最低/高位,同时存入CF |
RCL,RCR | 运算时,与CF构成一个环 |
DOS功能调用 | 说明 |
01H | 带回显的键盘输入,作CTRL_BREAK检查 |
02H | 字符显示 |
07H | 不带回显的键盘字符输入,按下Crtl+C和Tab键无反应 |
08H | 不带回显的键盘字符输入,作CTRL_BREAK检查 |
09H | 显示字符串,以’$’作为结束标志 |
0AH | 字符串输入 |
条件转移指令表
类型 | 名称 | 指令格式 | 测试/转移条件 | |
单标志判断 | 测试进位标志CF | JC/JNC targ | CF=1/0时,跳转到targ | |
测试零标志ZF | JZ/JNZ targ | ZF=1/0时,跳转到targ | ||
测试溢出标志OF | JO/JNO targ | … | ||
测试奇偶标志PF | JP/JNP targ | … | ||
测试符号标志SF | JS/JNS targ | … | ||
两数之间关系判断 | 相等 | 相等 | JE targ | ZF=1,X=Y |
不相等 | JNE targ | ZF=0,X!=Y | ||
无符号数 | 小于 | JB targ | CF=1,X<Y | |
小于等于 | JBE targ | CF=1或ZF=1,X<=Y | ||
大于 | JA targ | CF=0且ZF=0,X>Y | ||
大于等于 | JAE targ | CF=0或ZF=1,X>=Y | ||
有符号数 | 小于 | JL targ | SF@OF=1,X<Y | |
小于等于 | JLE targ | SF@OF或ZF=1,X<=Y | ||
大于 | JG targ | SF@OF与ZF=0,X>Y | ||
大于等于 | JGE targ | SF@OF=0,X>=Y | ||
循环指令
指令格式 | 说明 |
LOOP | CX=0,终止循环 |
LOOPZ/LOOPE | CX=0或ZF=0,终止循环 |
LOOPNZ/LOOPNE | CX=0或ZF=1,终止循环 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论