一、8086、8088寄存器组的分类:
通用寄存器: (1)数据寄存器:AX BX CX DX
(2)指针寄存器:SP BP
(3)変址寄存器:SI DI
控制寄存器: IP FLAG
段寄存器: CS DS SS ES
二、FLAG寄存器:
(1)运算结果标志
①进位标志CF 反映无符号数的运算结果是否产生进位或者错位
如果运算结果的最高位产生一个进位或者错位,则CF置1
移位指令把操作数的最高位或者最低位移入CF
②零标志ZF 反映运算结果是否为0
如果为0,则ZF置1
③符号标志SF 反映运算结果的符号位
与运算结果的最高位相同
④溢出标志OF 反映有符号数加减运算是否引起溢出
⑤奇偶标志PF 反映运算结果中1的个数,如果1的个数位偶数则置1
⑥辅助进位标志AF 在字节操作时如果发生低半字节向高半字节进位/错位,在字操作时如果发生低字节向高字节进位/错位,则AF置1
(2)状态控制标志
①方向标志DF 决定串操作指令执行时有关指针寄存器调整方向
DF=1,串操作指令按减方式改变有关的存储器指针值
DF=0,串操作指令按增方式改变有关的存储器指针值
②中断标志IF 决定CPU是否影响外部可屏蔽中断请求
IF=1,影响
IF=2,不影响
③陷进标志TF 当TF被置1后,CPU进入单步方式
三、8086.、8088指令
1、数据传送指令
MOV DST,SRC 把一个字或者字节从SRC传至DST
XCHG OPRD1,OPRD2 把OPRD1内容与OPRD2内容交换
LEA REG,OPRD 把OPRD的有效地址传送到OPRD
LDS REG,OPRD 把OPRD所含的一个32位地址指针的段值部分送到DS,把偏移部分送到REG
LES REG,OPRD 把OPRD所含的一个32位地址指针的段值部分送到ES,把偏移部分送到REG
2、堆栈指令
PUSH SRC 把SRC压入堆栈
POP DST 从栈顶弹出一个数到DST
3、FLAG操作指令
LAHF 把FALG的低8位传送到AH的相应位
SAHF 把AH的相应位传送到FLAG的低8位
PUSHF 把FLAG的内容压入堆栈
POPF 把栈顶的一个字送到FLAG
CLC CF位清0
STC CF位置1
CMC CF位取反
CLD DF位清0
STD DF位置1
CLI IF位清0
STI IF位置1
4、加减运算指令
ADD OPRD1,OPRD2 OPRD1<--OPRD1+OPRD2
ADC OPRD1,OPRD2 OPRD1<--OPRD1+OPRD2+CF
INC OPRD OPRD<--OPRD+1
SUB OPRD1,OPRD2 OPRD1<--OPRD1-OPRD2
SBB OPRD1,OPRD2 OPRD1<--OPRD1-OPRD2-CF
DEC OPRD OPRD<--OPRD-1
NEG OPRD OPRD=0-OPRD
5、比较指令
CMP OPRD1,OPRD2 OPRD1-OPRD2
6、乘除法指令
MUI OPRD 若OPRD为8位 AX<--AL*OPRD 若OPRd为16位 DX:AX<--AX*OPRD
IMUI OPRD
DIV OPRD 若OPRD为8位 AX÷OPRD-->AL商 AH余 若OPRd为16位 DX:AX÷OPRD-->AX商 DX余
IDIV OPRD
7、符号扩展指令
CBW 把AL中得符号扩展AH,即若AL最高有效位为0时,AH=00H,若AL最高有效位为1时,AH=FFH
CWD 把AX中得符号扩展至DX
8、逻辑运算与移位
NOT OPRD OPRD<--- ~OPRD
AND OPRD1,OPRD2 OPRD1<--- OPRD1&&OPRD2
OR OPRD1,OPRD2 OPRD1<---OPRD1 || OPRD2
XOR OPRD1,OPRD2 OPRD1<--- OPRD1 异或 OPRD2
TEST OPRD1,OPRD2 OPRD1 && OPRD2
SAL OPRD,m 算术左移
SHL OPRD,m 逻辑左移
SAR OPRD,m 算术右移
SHR OPRD,m 逻辑右移
ROL OPRD,m 左循环移位
ROR OPRD,m 右循环移位
RCL OPRD,m 带进位做循环移位
RCR OPRD,m 带进位右循环移位