文档介绍:第四章 8088(8086)的指令系统
一、IBM PC(8086/8088) 指令系统
二、数据传送指令
三、算术运算指令
四、逻辑运算指令
五、串操作指令
六、控制转移指令
七、处理机控制指令
一、IBM PC(8086/8088) 指令系统
8086/8088 指令系统可分为六组:
数据传送指令(Data transfar);
算术指令( Arithmetic);
逻辑指令(Logic);
串处理指令(String manipulation);
控制转移指令( Control transfar);
处理机控制指令( Processor control);
二、数据传送指令
分类
名称
格式
功能
O S Z A P C
基本传送指令
MOV DST,SRC
字、字节传送
不影响
进栈指令
PUSH OPRD
字压入堆栈
不影响
出栈指令
POP OPRD
字弹出堆栈
不影响
交换指令
XCHG DST,SRC
字、字节交换
不影响
有效地址送寄存器指令
LEA REG, SRC
有效地址寄存器
不影响
指针送寄存器及DS指令
LDS REG, SRC
地址指针寄存器,DS
不影响
指针送寄存器及ES指令
LES REG, SRC
地址指针寄存器,ES
不影响
输入指令
IN AL, PORT
外设数据AL
不影响
输出指令
OUT PORT, AL
AL 外设数据
不影响
换码指令
XLAT
AL中数据转换
不影响
读取标志指令
LAHF
Flag 低字节 AH
不影响
设置标志指令
SAHF
AH Flag 低字节
Z A P C
标志寄存器入栈指令
PUSHF
把Flag内容压入堆栈
不影响
标志寄存器出栈指令
POPF
把Flag内容弹出堆栈
O S Z A P C
通用数据传送指令
地址传送指令
累加器专用指令
标志寄存器传送指令
1. 通用数据传送指令
(1) 基本传送指令 MOV DST, SRC
源操作数——寄存器、存储器、立即数
目的操作数——寄存器、存储器
执行的操作: DST SRC
• CPU内部寄存器之间的数据传送(除CS,IP外)
MOV AL,BL
MOV DX, DI
MOV SI, BP
MOV DS, BX
MOV AX,DX
•立即数传送到CPU内部通用寄存器组(AX,BX,CX,DX,BP,SP,DI,SI)
MOV CL, 4
MOV DX, 03FFH
MOV DI, 04BFH
• CPU内部寄存器(除CS,IP外)与存储器(所有寻址方式)之间的数据传送
MOV BX, BUFFER MOV [DI], CX
MOV AL, [2000] MOV SI, BLOCK[BP]
MOV AX, [SI] MOV DS, DAT[SI+BX]
•立即数给存储单元赋值
MOV WORD PTR[2000], 10
MOV BYTE PTR[BX+DI], 30
例1: 把地址为AREA1(段内偏移量)的存储单元的内容,传送至同一段内的地址为AREA2的存储单元中。
AREA1
AREA2
65
F3
02
00
24
E0
05
00
MOV AREA2, AREA1
MOV AL, AREA1
MOV AREA2, AL
注意事项: 1. 立即数不能直接送段寄存器 MOV DS, 3000H
2. 目标操作数不允许用立即数方式 MOV 2000H, AL
3. 不允许在两个存储单元间传送数据 MOV[2000H],[3000H]
4. 不允许在两个段寄存器之间传送数据 MOV DS, ES
5. MOV 指令不影响标志位。
例2:若要传送的不是一个字节,而是一个数据块,(例如内有100个字
节),如何实现?
mov si, offset area1
mov di, offset area2
mov cx, 100
Again: mov al, [si];
mov [di], al
inc si
inc di
dec cx
jnz again
int 3
AREA1
AREA2
65
F3
02
…
…
05
00
100
= Lea si, area2
(2) 栈操作指令 PUSH OPRD
POP OPRD
堆栈——按照先进后出的原则组织的一段内存区域。8088中规定堆栈设
置在堆栈段(SS段)内,堆栈指针SP的初值决定了堆栈的大小。
SP始终指向堆栈的顶部,即始终指