8086汇编指令大全

来源:百度文库 编辑:神马文学网 时间:2024/04/29 00:26:17
标志寄存器:  9个有效位,分6个状态寄存器和3个控制寄存器
CF 当执行一个加法(减法)使最高位产生进位(借位)时CF=1  否则CF=0
PF 指令执行的结果低8位有偶数个一时,CF=1 否则CF=0
AF 当执行一个加法(减法)使运算结果低4位向高4位有进位(借位)时AF=1  否则 AF+0
ZF 当前运算结果为零,ZF=1 否则ZF=0
SF 符号标志位
OF 溢出标志位
DF 方向标志位
IF  中断允许位 IF=1时响应外部中断
TF  跟踪标志位
操作数:[目的操作数(OPD),源操作数(OPS)]  ;立即操作数,寄存器操作数,存储器操作数。
寻址方式:
1) 寄存器寻址 例: INC  AX; MOV AX,BX
2) 寄存器间接寻址  (寄存器只能是BX,DI,SI,BP);[PA=(BX、DI、SI)+DS》4)或BP+SS》4]
3) 寄存器相对寻址
4) 基址变址寻址
5) 相对基址变址寻址
6) 直接寻址
7) 立即数寻址
i. 立即数寻址立即数寻址不能用在单操作数指令中
ii. 在双操作数中,立即数寻址方式不能用于目的操作数字段
指令系统:
1) 数据传送指令   mov
注意:
不允许在两个存储单元之间直接传送数据
不允许在两个段寄存器之间传送数据
不允许用立即数直接为段寄存器赋值
不影响标志位
不允许寄存器或存储单元到除CS外的段寄存器
2) 入栈(出栈)指令PUSH(POP)
注意:
PUSH操作数不能是“立即数”POP操作数不能是段寄存器CS
不影响标志位
先进后出
单操作符
3) 交换指令XCHG
注意:
只允许寄存器与存储单元之间的交换
不影响标志位
4) 换码指令 XLAT
5) 地址传送指令   LEA(load effective address)  :偏移地址 ()
6) 数据段指针送寄存器     LDS  :低地址的字送指定的通用寄存器(SI)、高地址的字送DS
7) 附加段指针送寄存器指令 LES  :与LDS相似,低地址的字送通用寄存器(DI)、高地址送ES
上三指令不影响标志位
8) 标志寄存器传送指令
LAHF :标志寄存器低八位送AH
SAHF :AH送标志寄存器低八位
PUSHF:标志寄存器压入堆栈
POPF :栈顶内容送标志寄存器
9) 加法指令 ADD
目的操作数只能是寄存器或存储单元
对CF,OF,SF,PF,ZF,AF有影响
10) 加1指令  INC
对OF,SF,PF,ZF,AF有影响
11) 带位加法指令  ADC
在进行单精度运算时用ADD指令,在高精度低位运算时用ADD、高位用ADC
OPD=OPD+OPS+CF
12) 减法指令 SUB
对CF,OF,SF,PF,ZF,AF有影响
13) 带借位减法指令 SBB
OPD=OPD—OPS—CF对CF,OF,SF,PF,ZF,AF有影响
对CF,OF,SF,PF,ZF,AF有影响
14) 减1指令  DEC
15) 比较指令  CMP
16) 求补指令  NEG
17) 无符号乘法指令  MUL
字节操作:AX=AL*OPS
字操作:DX,AX=AX*OPS
18) 有符号乘法指令 IMUL
19) 无符号除法指令 DIV
字节的操作:AL=AX/(OPS)的商
AH=AX/(OPS)的余数
字的操作:
20) 有符号除法 IDIV
21) 字节转换为字指令 CBW
把AL中的符号位扩展到AH中,如果AL的最高位为0,则AH=00H,如果最高位为1,则AH=FFH
22) 字转换为双字指令  CWD
23) 压缩的BCD码调整指令
DAA   加法的十进制调整指令
DAS    减法的十进制调整指令
24) 非压缩的BCD码调整指令
AAA   加法的ASCII调整指令
AAS  减法的ASCII调整指令
AAM  乘法的ASCII调整指令
AAD  除法的ASCII调整指令
25) 逻辑与运算指令
ADD
OR
NOT
TEST(OPD和OPS的内容不变)
26) 移位指令
逻辑左移与算术左移SHL、SAL(低位补0)
算术右移 SAR(高位不变、CF为最后移入的值)
逻辑右移 SHR(高位补0、CF为最后移入的值)
27) 循环移位
左移  ROL (CF为最后移入的值)
右移  ROR (CF为最后移入的值)
带进位循环左移  RCL(CF+OPD 一起左循环)
带进位循环右移  RCR(OPD+CF 一起右循环)
28) 无条件转移指令下JMP
JMP SHORT OPD(IP=IP+8位位移量)
JMP NEAR PTR OPD(IP=IP+16位位移量)
上二条指令目的地址是IP=OPD+IP
JMP WORD PTR OPD(IP=EA)
JMP FAR PTR OPD(IP=OPD的段内偏移地址  CS=OPD段地址)
JMP DWORD PTR OPD(IP=EA  CS=EA+2)
29) 条件转移指令
JZ(JE)结果为0则转移(ZF=1)
JNZ(JNE)结果不为0则转移(ZF=0)
JS 结果为负则转移(SF=1)
JNS 结果为正则转移(SF=0)
JO 溢出则转移(OF=1)
JNO 不溢出则转移(OF=0)
JP(JPE)奇偶位为1则转移(PF=1)
JNP(JPO)奇偶位不为1则转移(PF=0)
JC(JNAE,JB)低于且不等于或进位位为1则转移(CF=1)
JNC(JNE,JNB)高于或等于或进位位为0则转移(CF=0)
30)