汇编语言指令集合 吐血整理
RET(return)
5.中断
INT(interrupt)指令
IRET(interrupt return)
INTO(interrupt if overflow)
六、处理机控制指令
1.标志处理指令
CLC(Clear carry)
CMC(Complement carry)
STC(Set carry)
CLD(Clear direction)
串比较指令
SCASB(Scan string of byte)
串搜索指令
SCASW(Scan string of word)
串搜索指令
STOSB(Store string of byte)
存串指令
STOSW(Store string of word)
存串指令
LODSB(Load string of byte)
ES(Extra Segment):附加段寄存器。
第一部分:指令助记符: 一、数据传送指令
1.通用数据传送指令 MOV(Move) PUSH(Push onto the stack) POP(Pop from the stack) XCHG(Exchange)
2.累加器专用传送指令 IN(Input) OUT(Output) XLAT(Translate)
REPE(Repeat when empty) 若(CX)=0,则退出,否则 CX=CX+1;
REPZ(Repeat when flag )
若 ZF=0,则退出,否则 CX=CX+1;
REPC(Repeat when carry flag)
REPNE(Repeat when not empty)
REPNZ(Repeat when not zero flag)
DW(Define Word):定义字 DD(Define Double):定义双字 DUP(duplication) :重复;复制,复写 3.过程定义伪指令: PROC(Process): 4.定位伪指令: ORG(Origin ): .5.常数、变量及标号 OFFSET(Offset):偏移量 6.表达式和运算符: ①算术运算符: SHL(shift logical left):逻辑左移 SHR(shift logical right):逻辑右移 ②关系运算符: EQ(Equal):相等 NE(Not Equal):不等于 LT(Less Than):小于 LE(Less Than or Equal):小于等于 GT(Greater Than):大于 GE(Greater Than or Equal) ③取值运算符: SEG(Segment) OFFSET(Offset) ④属性运算符: PTR(Pointer):指针
STD(Set direction)
CLI(Clear interrupt)
STI(Set interrupt)
2.其他处理机控制指令
NOP(No Opreation)
HLT(Halt)
WAIT(Wait)
ESC(Escape)
LOCK(Lock)
第二部分:伪指令
1.符号定义伪指令:
EQU
.
2.数据定义伪指令:
8086/8088指令系统记忆表 数据寄存器分为: AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操 作数,另外,所有的 I/O 指令都使用这一寄存器与外界设备传送数据. BH&BL=BX(base):基址寄存器,常用于地址索引; CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环 (loop)和串处理指令中用作隐含的计数器. DH&DL=DX(data):数据寄存器,常用于数据传递。 他们的特点是,这4个16位的寄 存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别 寻址,并单独使用。
JS(Jump if sign)
结果为负则转移
JNS(Jump if not sign)
结果为正则转移
JO(Jump if overflow)
溢出则转移
JNO(Jump if not overflow)
不溢出则转移
JNP(或 JPO)(Jump if not parity,or parity odd) 奇偶位为0则转移
JNLE(或 JG)(Jump if not less or equal,or greater)不小于或等于,或者大于则转 移
(4)测试 CX 的值为0则转移指令
JCXZ(Jump if CX register is zero) CX 寄存器
3.循环指令
LOOP(loop)
4.子程序
CALL(call)
(2)比较两个无符号数,并根据比较的结果转移
JB(或 JNAE,JC)
JNB(或 JAE,JNC)
JBE(或 JNA)(Jump if below or equal,or not above)低于或等于,或不高于则转 移
转移
JNBE(或 JA)(Jump if not below or equal,or above)不低于或等于,或者高于则
加法 带进位加法
加1
减法
SBB(subtract with borrow)
带借位减法
DEC(Decrement)
减1
NEG(Negate)
求补
CMP(Compare)
比较
3.乘法指令
MUL(Unsigned Multiple)
无符号数乘法
IMUL(Signed Multiple)
带符号数乘法
4.除法指令
取串指令
LODSW(Load string of word)
取串指令
CLD(Clear direction flag)该指令使 DF=0,在执行串操作指令时可使地址自动增量;
STD(Set direction flag) 该指令使 DF=1,在执行串操作指令时可使地址自动减量.
DAA(Decimal adjust after addition)
REPNC(Repeat when not carry flag)
2.串操作指令
MOVSB (Move string of byte)
串传送指令
MOVSW(Move string of word)
串传送指令
CMPSB(Compare string of byte)
串比较指令
CMPSW(Compare string of word)
AAM(ASCII adjust after multiple)
非压缩 BCD 码乘法调成指令
AAD(ASCII adjust after divid)
非压缩 BCD 码除法调成指令
五、控制转移指令
1.无条件转移指令
JMP(jmp)
跳转指令
2.条件转移指令
(1)根据单个条件标志的设置情况转移
JZ(或 JE)(Jump if zero,or equal) 结果为零(或相等)则转移
组合 BCD 码的加法调整指令
DAS(Decimal adjust after substract)
组合 BCD 码的减法调整指令
AAA(ASCII adjust after addition)
非压缩 BCD 码加法调成指令
AAS(ASCII adjust after substract)
非压缩 BCD 码减法调成指令
JP(或 JPE)(Jump if parity,or parity even) 奇偶位为1则转移
JB(或 JNAE,JC)(Jump if below,or not above or equal,or carry)低于,或者不高 于或等于,或进位位为1则转移
JNB(或 JAE,JNC)(Jump if not below,or above or equal,or not carry)不低于,或 者高于或者等于,或进位位为0则转移
DB(Define Byte):定义字节
循环指令
调用指令 返回指令
从中断返回指令 若溢出则中断
进位位置0指令 CF<-0 进位位求反指令 CF<-CF
进位位置1指令 CF<-1 方向标志置0指令 DF<-0
方向标志置1指令 DF<-1 中断标志置0指令 IF<-0
中断标志置1指令 IF<-0
无操作 停机 等待 换码 封锁
二、算术指令 1.加法指令 ADD(add) ADC(add with carry) INC(increment) 2.减法指令 SUB(subtract)
传送 进栈 出栈
交换
输入 输出 换码
有效地址送寄存器 指针送寄存器和 DS 指针送寄存器和 ES
标志送 AH AH 送标志寄存器
标志进栈 标志出栈
DIV(Unsigned divide)
无符号数除法
IDIV(Signed divide)
带符号数除法
CBW(Convert byte to word)
字节转换为字
CWD(Contert word to double word) 字转换为双字
三、逻辑指令
1.逻辑运算指令
AND(and)
逻辑与
OR(or)
(3)比较两个带符号数,并根据比较的结果转移
转移
JL(或 LNGE)(Jump if less,or not greater or equal)小于,或者不大于或者等于则
转移
JNL(或 JGE)(Jump if not less,or greater or equal)不小于,或者大于或者等于则