- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(4) 段寄存器和存储单元之间(seg/M) MOV DS,[2000H] ; 将2000H和2001H两存储单元内容传到DS
(5) 立即数到通用寄存器(r/Imm) MOV SP,2000H ;将2000H送SP
(6) 立即数到存储单元(M/Imm) MOV WORD PTR [SI],4501H ;将立即数4501H送(SI)所指 的字单元
格式
MOV DST,SRC PUSH OPRD POP OPRD XCHG DST,SRC LEA REG, SRC LDS REG, SRC LES REG, SRC IN AL, PORT
OUT PORT, AL
XLAT LAHF SAHF PUSHF POPF
功能
字、字节传送 字 压入堆栈 字 弹出堆栈 字、字节交换 有效地址寄存器 地址指针寄存器,DS 地址指针寄存器,ES 外设数据AL
3. 再将AL内容送至SP 所指单元;
例:MOV AX,1234H PUSH AX
POP AX 指令分两步执行: 1. 先将SP所指单元内
容送至AL, 然后 2. 再SP+1所指单元内
容送至AH, 然后 3. SP+2 SP
例:MOV AX,5678H POP AX
入栈和出栈指令性用于程序保存和恢复数据,或用 于转子或中断时保护现场和恢复现场。其主要注意:
mov cx, 100
100
Again: mov al, [si];
mov [di], al
inc si
inc di
dec cx
jnz again int 3
= Lea si, area2
65 AREA1 F3 02 … …
05 00 AREA2
(2) 栈操作指令
PUSH OPRD
POP OPRD
3.4 8088(8086)的指令系统
一、IBM PC(8086/8088) 指令系统 二、数据传送指令 三、算术运算指令 四、逻辑运算指令 五、串操作指令 六、控制转移指令 七、处理机控制指令
一、IBM PC(8086/8088) 指令系统
8086/8088 指令系统可分为六组:
数据传送指令 (Data transfar); 算术指令 ( Arithmetic); 逻辑指令 (Logic); 串处理指令 (String manipulation); 控制转移指令 ( Control transfar); 处理机控制指令 ( Processor control);
Mov AREA2, AREA1
Mov AL, AREA1 Mov AREA2, AL
65 AREA1 F3
02
00
24 AREA2 E0
05
00
例2:若要传送的不是一个字节,而是一个数据块,(例如内 有100个字节),如何实现?
mov si, offset area1
mov di, offset area2
S CPU
CS:IP不能直接改变
CS
r/seg
DS seg/m
SS
ES
M m I
r/m
Imm
rI
IM
INSTm
由图可知MOV指令有6种格式:
(1) CPU通用寄存器之间传送(r/r) MOV CL,AL ; 将AL中的8位数据传到CL (2)通用寄存器和段寄存器之间(r/SEG) MOV DS,AX ; 将AX中的16位数据传到DS (3) 用寄存器和存储单元之间(r/M) MOV AL,[BX] ; 将[BX]所指存储单元内容传到AL
注意: ① MOV指令可以传8位或16位数据 例:MOV ES,AL ;错
MOV CL,4321H ;错 ② MOV指令的操作数中必用一个寄存器,不允许两存储单元 之间传送数据 MOV [2000H],[3000H] ;错 例:MOV AL,[SI]
MOV [DI],AL ③ 不能用CS,IP作目的操作数 ④ 不允许在段寄存器之间直接传送数据 例:MOV DS,ES ;错
AL 外设数据 AL中数据转换 Flag 低字节 AH AH Flag 低字节 把Flag内容压入堆栈 把Flag内容弹出堆栈
OSZ APC 不影响 不影响 不影响 不影响 不影响 不影响 不影响 不影响
不影响 不影响 不影响
Z APC 不影响
OSZ APC
1. 通用数据传送指令
(1) 基本传送指令 MOV DST, SRC
二、数据传送指令
分类
通用 数据 传送 指令
地址 传送 指令
累加 器专 用指 令
标志 寄存 器传 送指 令
名称
基本传送指令 进栈指令 出栈指令 交换指令 有效地址送寄存器指令 指针送寄存器及DS指令 指针送寄存器及ES指令 输入指令
输出指令 换码指令 读取标志指令 设置标志指令 标志寄存器入栈指令 标志寄存器出栈指令
段
SS:SP
方式: (1) CPU通用寄存器入/出栈,如:
PUSH AX POP BX (2) 段寄存器入/出栈, 如 PUSH CS POP DS (3) 存储单元入/出栈 PUSH [BX+DI] POP [2000H]
PUSH AX
指令分两步执行:
1. SP-2SP
2. 将AH内容送至 SP+1所指单元;
⑤ 不允许用立即数作目的操作数 MOV 2000H, AL ;错
⑥ 不能向段寄存器送立即数 MOV DS, 3000H;错
例:MOV AX,3000H MOV DS,AX
* MOV 指令不影响标志位。
例1: 把地址为AREA1(段内偏移量)的存储单元的内容,传 送至同一 段内的地址为AREA2的存储单元中。
堆栈——按照先进后出的原则组织的一段内存区域。8088中规定堆栈设 置在堆栈段(SS段)内,堆栈指针SP的初值决定了堆栈的大小。 SP始终指向堆栈的顶部,即始终指向最后推入堆栈的信息所在 的单元。
00000
操作数:
16位通用寄存器;
SS:0000
段寄存器;
16位内存操作数(除立即数之外的
堆 栈
任何寻址方式)。
源操作数——寄存器、存储器、立即数 目的操作数—— 寄存器、存储器
执行的操作: DST SRC
MOV指令最简单、最常用,用来赋初值,或传送数据, 或对数据进行暂存等。
其中源操作数(src)和目的操作数(dst CX
R r/r DX BP SP SI DI