第3章 8088 8086MPU的指令系统
第三章 80868088 CPU的指令系统(第一讲)
31
例如: 例如:
PUSH PUSH PUSHF AX CX ;保护标志寄存器内容 ;这段程序要用到AX,CX以及标志位 ;恢复标志寄存器内容 CX AX
POPF POP POP
... ...
32
数据传送指令中,除SAHF和POPF这两条指令 外,其余所有指令均不影响标志位.
33
3.3.2 算术运算指令
20
BX
执行后 (BX)=1020
高地址
POP BX指令执行示意图 指令执行示意图
17
堆栈指令使用时应注意几点: 堆栈指令使用时应注意几点:
①堆栈操作总是按字进行 堆栈操作总是按字 不能从栈顶弹出一个字给CS ②不能从栈顶弹出一个字给CS 堆栈指针为SS SP,SP永远指向栈顶 SS: ③堆栈指针为SS:SP,SP永远指向栈顶 SP自动进行增减量 自动进行增减量( ④SP自动进行增减量(-2,+2)
IP IP(下) 继主 续程 执序 行
IP' IP'(下) 继子 续程 执序 行1
(a)
子程序调用示意图
(b)
(a) 主程序调子程序; (b) 子程序嵌套示意图
11
规定由SS指示堆栈段的段基址,堆栈指针SP 始终指向堆栈的顶部,SP的初值规定了所用 堆栈区的大小.堆栈的最高地址叫栈底.
第三章80868088指令系统
第三章80868088指令系统机器语言指令由二进制代码组成。
一条指令一般包含操作码(OP )和操作数两部分,操作码指明指令所完成的操作,操作数指出该指令在执行规定操作时所需的信息。
指令中用于说明操作数(一般指源操作数)所在地址的方式被称为寻址方式。
(8086的寻址方式分两类:数据寻址方式和转移地址的寻址方式)3.2.1数据寻址方式 P51 1.立即寻址:数据是8位或16位,直接放在指令的最后一个(8位)或两个字节(16位)中,这样的数据称为立即数。
MOV AL ,80HADD AX ,0F000HMOV AX ,1234HADD AL ,10H操作码字节AX操作数字节操作码字节操作数(a )MOV AL , 80H(b )MOV AX , 1234H图3-2 立即寻址方式指令举例 P522. 寄存器寻址:数据存放在指令规定的寄存器中。
MOV CL ,DL MOV AX ,BX注意:在双操作数指令中源操作数寻址方式和目的操作数寻址方式。
CL DL AXAL AHBL BH (a )MOV CL , DL (b )MOV AX , BX图3-3 寄存器寻址方式指令举例 P523. 直接寻址:操作数在存储器中,其16位有效地址,即段内偏移地址在指令码中,占两个字节。
MOV AL ,[1064H] ;设(DS )=2000HADD AX ,[2000H]代码段操作数偏移地址数据段图3-4 直接寻址方式指令举例 P53操作数数据4. 寄存器间接寻址:操作数在存储器中,其16位有效地址EA 在指令指定的基址寄存器BX 或变址寄存器SI 、DI 中。
BX EA = SIDI 注意:新教材中有BP 【例】 MOV AX ,[SI] MOV [BX] , AL 如果:(DS )=3000H ,(SI )=2000H ,(BX )=1000H,(AL )=64H注意:默认段地址寄存器为DS 以上为二字节指令;MOV AX,[BP]为三字节指令;实为指令MOV AX ,[BP+0]的简写!图3-5 寄存器间接寻址方式指令举例 P535. 寄存器相对寻址:操作数在存储器中,其效地址是一个8位或16位的位移量与一个基址寄存器或变址寄存器的内容之和。
第3章 80888086指令系统
①立即寻址 ②直接寻址 ③寄存器寻址 ⑤寄存器相对寻址 ⑥基址-变址寻址 ⑦相对的基址-变址寻址
在8086指令系统中,寻址方式可分为8种:
④寄存器间接寻址
⑧隐含寻址
14
一. 立即寻址
操作数直接由指令给出——立即数
例: MOV AX, 1C8FH MOV BYTE PTR[2A00H], 8FH MOV 2A00H, AX ; 错误!
(BX) (BP) (SI) (DI)
物理地址=(DS)左移四位+(BX)或(SI)或(DI) 物理地址=(SS)左移四位+(BP)
例: MOV AX, [BX] MOV CL, CS:[DI] × MOV AX, [DX] × MOV CL, [AX]
21
例3-5 MOV AX,[SI]
若 (DS)=6000H, (SI)=1200H, (61200H)=44H, (61201H)=33H 则指令执行后,(AX)= 3344
DS BX + SI
8000 2000 1000
操作码
. .
代码段
83000 83000H
AX AH AL
. . .
YY XX 数据段
. . .
30
七. 相对的基址-变址寻址
在基址-变址寻址的基础上再加上一个相对位移量 注意事项同基址-变址寻址
EA =
(BX)
(BP)
+
(SI) (DI)
+
指令中直接给出操作数的16位偏移地址
偏移地址也称为有效地址(EA, Effective Address)
默认的段寄存器为DS,但也可以显式地指定其 他段寄存器——称为段超越前缀
第3章 8086指令系统
MOV AL, 80H
AL
80H
程序存储器 操作码字节 指 令 码
80H
程序存储器
MOV AX, 1234H
AH 12H
AL 34H
操作码字节
34H 12H
指 令 码
2)寄存器寻址方式 例如:INC CX MOV AX, CX
程序存储器 AX
CX
89 C1
指令码 (包括操作数)
3)存储器寻址方式 存储器寻址方式的操作数存放在存储器单元 中。因此,要存取操作数就必须知道其存储器的 单元地址。在指令中可以直接给出或间接给出操 作数的地址,以达到存取操作数的目的。 指令中给出的地址只是操作数的有效地址 (EA),并且是放在方括号(“[ ]”)中。若 要从存储器中存取操作数还须得到实际的地址 (物理地址)。 物理地址=段地址左移四位+有效地址
40000H … … 41444H 45
代 码 段
AH
45
数 据 段
4)I/O端口寻址方式 ⑴ 直接端口寻址方式 IN AL, 21H
I/O接口 01H 02H
……
操作码
21H AL
代 码 段
80
21H
80
⑵ 间接端口寻址方式 OUT DX, AL
I/O接口 12
0001H 0002H
……
DX
34
2.地址的寻址方式 地址的寻址方式其时是程序转移地址的寻 址方式,也就是找出程序转移的地址号,而不 是操作数。 转移地址可以在段内(称段内转移),也 可以跨段(称段间转移)。寻求转移地址的方 法有以下四种: 1)段内直接寻址 转移的地址是当前IP内容和指令规定的8位 或16位位移量之和。 当位移量是8位时,称为短程转移;位移量 是16位时称为近程转移。
第3章 8086(8088)CPU指令系统
20H 00H
00H 34H 12H
3000H:0000H
注: ◆基址因子BP访问默认为堆栈段 ◆不能同时取两个基址因子;也不 能同时去两个变址因子
16
+
3000H:3000H
AH
AL
第3章 8086/8088CPU指令系统
4.1.4 操作数寻址方式
●存储器寻址之相对基址加变址寻址(Base
9
第3章 8086/8088CPU指令系统
3.1.3 操作数寻址方式
4.1操作数寻址方式
所谓操作数的寻址方式,是在指令格式中怎样有效的表示出操 作数的存放位臵,CPU在执行该指令时,按照指令格式中的表示找 到并对数据进行存取。 1.立即寻址(Immediate Addressing) 立即寻址中的操作数作为指令的一 部分存放在代码段中,在取指阶段数据 随指令一起被取到CPU,这种数据在指 令格式中的直接表现为常数。 如:MOV AL,34H
2
第3章 8086/8088CPU指令系统
汇编语言指令或符号指令:用字母和其它一些符 号组成的“助记符”与操作数等表示的指令称为汇编 语言指令或符号指令。 例如: MOV AX, BX ; AX←BX 而其二进制代码(机器代码)为89D8H,就是 1000 1001 1101 1000 B 不易理解,不易记忆。助记符是MOV。
操作码
操作数
4
第3章 8086/8088CPU指令系统
3.1.1 8086/8088指令格式
4.1操作数寻址方式
8086/8088机器指令格式通常1-6个字节组成。典型的指令格式 由2个字节组成,如下图所示。
操作码 D W MOD REG R/M
微机原理与接口技术-第三章 8086 8088 cpu的指令系统
3.4 指令系统
3.4.2 算术运算指令 5.十进制调整指令 (2)减法的非压缩BCD码调整指令AAS
3.4 指令系统
3.4.2 算术运算指令 5.十进制调整指令 (3)乘法的非压缩BCD码调整指令AAM
(4) 除法的非压缩BCD码调整指令AAD
3.4 指令系统
3.4.2 算术运算指令 5.十进制调整指令 (5) 加法的压缩BCD码调整指令DAA
3.3 DEBUG的使用方法
3.3.1 DEBUG使用方法 6.单步运行内存中的程序 7. 查看与修改寄存器内容 8. 查看与修改存储器内容 9. 内存块复制与填数 10. 数据块输出与输入 11. 程序段落输出与输入
3.3 DEBUG的使用方法
3.3.2 DEBUG使用示例
3.3 DEBUG的使用方法
3.4.2 算术运算指令 2.减法指令 ② 带借位的减法指令SBB
3.4 指令系统
3.4.2 算术运算指令 2.减法指令 ③ 与INC的功能相反,DEC是减1指令
3.4 指令系统
3.4.2 算术运算指令 2.减法指令 ④ 求补指令NEG
⑤ 比较指令CMP
3.4 指令系统
3.4.2 算术运算指令 2.减法指令 ⑤ 比较指令CMP
④ 带进位循环右移指令RCR
3.4 指令系统
3.4.4 移位指令 2.循环移位指令
3.4 指令系统
3.4.5 串操作指令 1. 串操作指令 (1)串传送指令MOVS的指令格式
3.4 指令系统
3.4.5 串操作指令 1. 串操作指令 (2) 串比较指令CMPS的指令
(3) 串搜索指令SCAS的指令
第三章
8086/8088 CPU086/8088 CPU指令格式
第3章 8086 8088指令系统和寻址方式
第3章 指令系统和寻址方式
3.1 概述 3.2 数据寻址方式 3.3指令格式及指令执行时间 3.4 8088/8086 CPU的指令系统
3.1 指令系统概述
指令是计算机能够识别和执行的指挥计算机进行操作的命
令。指令系统是指微处理器能执行的各种指令的集合。
程序是指令的有序集合,指令是程序的组成元素,通常一
演示
3.2 数据寻址方式
2. 寄存器间接寻址方式
在计算机中通常将BX、BP称为基址寄存器,SI、DI称为
变址寄存器,寻址时操作数的地址被放在这些寄存器中。
寄存器间接寻址方式在汇编格式中表示为
[基址寄存器名或变址寄存器名]
【例】
MOV AX, [BX]
;AX←DS:[BX]
演示
3.2 数据寻址方式
直接寻址方式是指寻找的操作数的地址在指令中直接给出。 这种寻址方式在汇编格式中表示为 ● 操作码 地址表达式 (或[地址表达式]) ● 操作码 [数字表达式]
3.2 数据寻址方式
【例】
MOV AX, [2000H];AX←DS:[2000H] MOV AX, ES: [2000H] ;AX←ES:[2000H]
MOV AX, 0102H
;AX←0102H
演示
3.2 数据寻址方式
3.2.2 寄存器寻址方式
寄存器寻址是指寻找的操作数在某个寄存器中。 格式: 操作码 寄存器名
比如AL,BX,CX,DS、IP等等。 【例】
MOV AX, BX
;AX←BX
演示
3.2 数据寻址方式
3.2.3 存储器寻址方式
1. 直接寻址方式
若(CS)=5200H 时,物理转移地址为 B230H,则当CS 的内容被设定为7800H, 物理转移地址应为多少? =9230H 78000H +9230H=81230H。
第3章 8086(8088)CPU指令系统
3.1 8086CPU指令概述
操作码
操作数(操作数地址)
操作数是参加本指令操作的数据
有些指令不需要操作数,通常的指令都有一个或两个操
作数,也有个别指令有3个甚至4个操作数
源操作数和目标操作数
寻址方式:指令中如何计算操作数的存放位置即操作
数的偏移地址或有效地址。CPU在执行该指令时能够按照
MOV AX,ES:[2000H];AX←ES:[2000H]
1、有效地址在指令中给出
2、需要使用总线周期
3、默认的段地址在DS段寄存器,可使用段超越前缀改变
3. 直接寻址方式
4. 寄存器间接寻址方式 MOV AX, [SI] ;AX←DS:[SI] MOV AL,[BP] ;AL←SS:[BP]
的集合
每种计算机都有它支持的指令集合 16位8086指令系统是Intel 80x86系列微处理器指令系
统的基础
8086/8088的指令系统,按照其功能可以分为以下六个
功能组: ① 数据传送 ③ 逻辑运算 ⑤ 程序控制 ② 算术运算 ④ 串操作 ⑥ 处理器控制
3.2 指令系统
学习指令的注意事项
3.直接寻址方式 4.寄存器间接寻址方式 5.寄存器相对寻址方式 6.基址变址寻址方式 7.基址变址相对寻址方式 端口寻址
1. 立即寻址方式 MOV AL,34H
代码段 10000H
;AL←34H
1000H:0000H
10100H 10101H 10102H AH AL
操作码 34H
1000H:0100H
在寄存器相对寻址或相对基址加变址寻址方式中,位移 量可用符号表示
MOV AX,[SI+COUNT]
第三章 8086 8088指令系统
SI 1200
+)
6000 0 1200 61200 AX 33 44
61200H 61201H
存储器 . . . 44H 33H 数 据 段
. . .
图 3-5 寄存器间接寻址示意图
3.2.5 寄存器相对寻址
寄存器相对寻址——操作数在存储器中。由指令指定的地址寄存器的内容加上指令中
给出的一个8位或16位的地址位移量,即可得操作数的偏移地址。
SI AX AX AX AX AX
3.2.8隐含寻址
隐含寻址—— 操作数隐含在操作码中,在有些指令的操作数中,不仅包含了操作的性质,
还隐含了部分操作数的地址。如乘法指令 MUL,在这条指令中只须指明乘数的地址,而被乘数 已经乘积的地址是隐含且固定的。这种将一个操作数隐含在指令码中的寻址方式就称为隐含
立即数操作数: 所谓立即数指具有固定数值的操作数,不因指令的执行而发生变化 。立即数操作 数只能用作源操作数,而不能用作目标操作数。
寄存器操作数:
8086CPU的8个通用寄存器和4个段寄存器可以作为指令中的寄存器操作数,寄存
器操作数在指令中既可以作为源操作数,也可以用作目标操作数。 存储器操作数: 参加运算的数据是存放在内存中。
两单元的内容送到AX中。假设DS=2000H,则所寻找的操作数的物理地址为: 2000H×10H+3102H = 23102H, 指令的执行情况如图3-3所示
存储器 . . .
MOV操作码
02H 31H AH AL 23102H 23103H
图 3-3 直接寻址方式
代 码 段
. . . ×× ×× . . . 数 据 段
请注意:使用基址—变址方式时,不允许将两个基址寄存器或两个变址寄存器组合
第3章 8086指令系统(2)
8086/8088指令系统按其功能分为以下类型:数 据传送指令、地址传送指令、标志寄存器传送 指令、算术运算指令、逻辑运算指令、移位指 令、控制转移指令、串操作指令、中断指令和 处理器控制指令。
一.数据传送指令
数据传送指令用于寄存器、存储单元、或输入
输出端口之间传送数据或地址。8086/8088有14
CMP AL,100
29
CMP指令执行后对标志位的影响
操作数类型
带符号的 二进制
CF ZF SF OF
两操作数的关系
01 0 0
等于
-010
小于
- 0 0 1 目的操作数 小于 源操作数
-000
大于
-011
大于
不带符号的 二进制
01 0 0
等于
10 -
- 目的操作数 低于 源操作数
00 -
-
高于
举例: n=8 bit 带符号数(-128~127), 无符号数(0~255)
PUSH AX
PUSH DX
78H
POP AX
56H
POP DX
34H
12H
9
(4)XCHG指令 格式:XCHG OP1,OP2 操作:源、目的操作数之间交换一个字节 或字的数据。源操作数或目的操作数只能 取通用寄存器或通用寄存器与存储器 例: XCHG AX,CX
XCHG AL,BL XCHG AX,[BP+DI]
中的数相乘,结果放在累加器中
乘积为双字节长时,结果放在AX中;乘积为双 字长时,分别放在DX(乘积的高16位)和AX中。 该指令的运行结果只影响标志位CF和OF 例:MOV AL,FIRST
MUL SECOND MOV THIRD,AX (2)IMUL指令 格式:IMUL SRC 该指令为带符号数相乘指令
微机原理 第3章 8086、8088指令系统
=20000H+1000H+2000H=23000H 指令执行结果是将23000H和23001H单元的内容送 入寄存器AX中。
MOV BL,2[BX] 或 MOV BL,[BX+2] ;(DS:[BX+2])BL
27
高地址
20
注意: (1) 直接寻址方式的操作数所在存储单元的段地址
一般在数据段寄存器DS中。 (2) 如果操作数在其他段,则需要在指令中用段超
越前缀指出相应的段寄存器名。
例4:MOV AH, ES∶ [2000H] ;将附加段寄存器ES的内 容乘16,再加上2000H作为操作数所在存储单 元的地址,取出该存储单元的内容送到寄存器 AH中。
运算结果的去向
指令系统:指令系统是计算机能够执行全部命令的 集合,它取决于计算机的硬件设计。指令系统因机 而异,没有通用性。
8
3、指令格式
指令格式: 操作码 [操作数],[操作数]
执行何种操作
目的操作数 源操作数
参加操作的数据
源操作数: 指令加工之前的数据 目的操作数:指令加工之后形成的数据
9
4、指令中的操作数类型: 根据操作数的来源进行分类:
表征参加操作的数据本身 立即数
表征数据存放的地址
寄存器 存储器
10
1)、立即数操作数:
表示参加操作的数据本身,可以是8位或16位 例: MOV AX,1234H ; AX 1234H MOV BL,22H
注意: 1)立即数只能用作源操作数,如 MOV AL,86H ∨ MOV 86H,AL ×
2)立即数必须和另一个操作数位数相等 MOV AL,3456H × MOV AX,34H ∨
第3章_8086的指令系统
26
2. 堆栈操作指令 堆栈是按先进后出的原则组织的一段内存区域,一 般作临时存储器用(仓库)。其指针SP为16位的寄存 器,始终指向栈顶(货物堆放的位臵)。堆栈的空间 大小是用户指定的。 20000H SS: 2000H ; 堆栈段的段基址; 表示堆栈从20000H处开始 假设用户定义堆栈为100个字节, 则SP自动设臵为0064H
18
6. 基址加变址寻址(基址加变址相对寻址) 操作数存放在内存中,但其偏移地址是由三部分相 加而成: EA=基址寄存器内容+变址寄存器内容+偏移量 EA有效地址 = BX SI
8位 16位
+
+
位移量
BP
DI
基址寄存器只有2个:BX,默认的段基址为DS; BP,默认的段基址为SS。
19
MOV AX,
3
寻址方式:寻找操作数的方式。
计算机中操作数可以存放在以下几个地方: 指令代码中,存放常量;MOV AX, 2070H 寄存器中:MOV AX, BX
内存中: MOV AX, [2000H]
I/O端口中: IN AL, 40H
4
1. 立即寻址 操作数直接放在指令中,紧跟在操作码的后面,与 操作码一起放在存储器的码段区域中。
MOV AX, 2030H
4000H ……
B8 2030
4000H ……
高字节 高地址
错误! 4001H B8H 4001H B8H
4002H 20H 4002H 4003H 30H 20H
低字节 低地址
4003H
30H
4004H ……
4004H ……
内存地址
内存内容
AX 20H AH
8086指令系统
MOV Al, [BX+5]
22
第三章:8086/8088的指令系统— —寻址方式
• 寄存器相对寻址方式(Register Relative Addressing)
• MOV AL,5[BX] • MOV AL,[BX+5] • COUNT EQU 5 • MOV AL,COUNT[BX]
29
第三章:8086/8088的指令系统— —指令系统
• 数据传送指令
1. 通用传送指令(MOV/ MOVZX/ MOVSX) 2. 堆栈操作指令(PUSH/POP、 PUSHA/POPA) 3. 交换指令(XCHG/BSWAP) 4. 输入/输出指令(IN/OUT) 5. 换码指令(XLAT/XLATB) 6. 地址传送指令 (LEA/LDS/LES/LSS/LFS/LGS) 7. 标志传送指令(LAHF/SAHF,PUSHF/POPF) 数据传送指令负责把数据、地址或立即数传送到寄存器或 存储单元中。
有效地址是一个基址寄存器和一个变址寄存 器的内容以及一个8位或16位位移量之和。
26
第三章:8086/8088的指令系统— —寻址方式
• 例如:
MOV AX,COUNT[BX][SI] MOV AX,COUNT[BX+SI] MOV AX,[BX+SI+COUNT] • 以上三者等价 • 若(DS)=3000H,(BX)=2000H, (SI)=1000H,COUNT=0250H, • 则物理地址=16d*(DS)+(BX)+(SI)+COUNT =30000+2000+1000+0250=33250H
第3章 8086 8088指令系统
字节2
6 5 4 3 2 1 0 7· · · 0 7· · · · ·0 7· · · · · 0 7· · · · · 0 DISPH DATAL DATAH
OP code
D w MOD REG R/M DISPL
操作码字节 寻址方式字节 位移量 立即数 •OP code为操作码,表示该指令要完成的操作。 为操作码, OP code为操作码 表示该指令要完成的操作。 •D=0:第一个操作数是目的操作数, 1:第二个操作数是目的操作数 D=0: 是目的操作数, 第二个操作数是目的操作数 D=0 第一个操作数是目的操作数 •W=0:8位操作数, 1:16位操作数 W=0: 位操作数, 16位操作数 W=0 •MOD指明寻址方式: MOD=11 寄存器寻址 MOD指明寻址方式 MOD指明寻址方式: MOD= MOD≠11存储器寻址 MOD≠11存储器寻址 00没有偏移量 1016 16位偏移量 00没有偏移量 01 8位偏移量 1016位偏移量 •REG用编码方式指明操作中所使用的寄存器。 REG用编码方式指明操作中所使用的寄存器 REG用编码方式指明操作中所使用的寄存器。 •R/M用编码方式指出存储器有效地址计算方法。 R/M用编码方式指出存储器有效地址计算方法 R/M用编码方式指出存储器有效地址计算方法。 •DISP表示地址偏移量。DATA则指明立即数。 DISP表示地址偏移量 则指明立即数。 DISP表示地址偏移量。DATA则指明立即数
DATA
操作码 00 02
DS : 80000 BX: 1000 DI: + 2000 DATA: + 0200 83200H
AX 30 40
码 段
40 30
83200 83201
数 据 段
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指令的操作是把35000H 字存储单元的内容送AX寄存器。
所以该指令执行后:AX=1234H
第3章
8088/8086MPU的指令系统
4.基址加变址寻址方式
这是一种基址加变址来定位操作数地址的方式,操作数 的有效地址是一个基址寄存器(BP或BX)和一个变址寄存器 (SI或DI)的内容之和。 MOV CL,[BX+SI] ;物理地址 PA=(DS)*10H+(BX)+(SI)
向量、矩阵运算指令等,称这类指令为多操作数指令。
第3章
8088/8086MPU的指令系统
3.1.3 指令系统
指令系统是指一台计算机所能执行的各种不同类型指令
的总和。即一台计算机所能执行的全部操作。不同计算机的
指令系统包含的指令种类和数目也不同。指令系统是表征一 台计算机性能的重要因素,它的格式与功能不仅直接影响到 机器的硬件结构,而且也直接影响到系统软件,影响到机器 的适用范围。
第3章
8088/8086MPU的指令系统
1.源操作数是寄存器寻址方式
如: ADD VARW, AX
MOV VARB, BH等。
其中: VARW 和 VARB是双字,字和字节类型的内存地址, 叫做符号地址。 2.目的操作数是寄存器寻址方式 如:ADD BH, 78H ADD AX, 1234H等。
第3章
第3章
8088/8086MPU的指令系统
3.2.3 RAM寻址方式
操作数也可以存放在存储器中,这种寻址方式叫做存储器寻址, 存储器寻址的关键是如何给出存储器的地址,给出方式不同,寻址方式 也有多种。 1.直接寻址方式:指令中给出操作数所在存储单元的偏移地址
【例3-3】MOV AX,[2000H]
设指令执行前:DS=3000H,(32000H)=50H,(32001H)=30H 则:操作数的物理地址=3000H*10H+2000H=32000H
算数运算类指令;逻辑运算类指令;移位类指令;
控制转移类指令;字符串操作指令;处理器控制类指令; 中断指令。 下面详细讲解。
第3章 3.3
8088/8086MPU的指令系统
8086指令系统(本课程的重点)
3.3.1 数据传送类指令 1. 通用数值传送指令(MOV) 格式:MOV DST,SRC
第3章
8088/8086MPU的指令系统
(2) 当外设地址用16位寻址或超过8位寻址时,采用寄 存器间接寻址方式,并且用寄存器 DX作为间接寻址寄
存器。例如:
• MOV DX, 3E4H OUT DX, AX 连续指令这2条指令,结果把寄存器AX中的数据输出 给端口地址为3E4H的外设
第3章 3.3
(BX)--基址寄存器 (SI)--源变址寄存器 (DI)--目的变址寄存器
若指令中指定的寄存器是BP,操作数在堆栈段,段基值
在SS中。
物理地址 = ( SS ) *10H+(BP) ---- 基地址指针寄存器, 可对指针进行修改形成下一个地址。
第3章
8088/8086MPU的指令系统
3.寄存器相对寻址方式
8088/8086MPU的指令系统
3.源和目的操作数都是寄存器寻址方式
如: MOV AX, BX MOV DH, BL等。
【例3-2】寄存器寻址应用:MOV AX,BX
指令执行前:(AX)=3064H (BX)=1234H
指令执行后:(AX)=1234H,BX内容未改变。 注意:源寄存器与目的寄存器的位数必须一致。 这种寻址方式的操作数已经存储在 CPU 的寄存器 中了,执行速度快,汇编程序尽量采用寄存器寻址。
解:操作数的有效偏移地址EA=基址+变址+位移量
EA= BX+SI+200H=2100H+0010H+200H=2310H
操作数的物理地址=DS*10H+EA=1000H*10H+2310H=12310H 指令的操作是把12310H存储单元中的内容送AX寄存器。 所以该指令执行后:AX=1234H
第3章
第3章
8088/8086MPU的指令系统
3.1.2 指令的分类
从用到的操作数个数区分,可能有如下4种情况:
1.无操作数指令
有的指令不涉及操作数,或使用约定的某个(些)操作 数,既已约定则没有必要再在指令中加以表示,称这类指令 为无操作数指令,它仅有操作码部分,例如停机指令、空操 作指令、关中断指令、堆栈结构的计算机系统中对堆栈中数
第3章
8088/8086MPU的指令系统
4.多操作数指令
另外一些指令可能使用多个操作数,如 3 个操作数,其
中两个操作数地址分别给出目的操作数和源操作数的地址,
第三个操作数地址用于指出保存本次的运算结果的去处。可 以称这类指令为三操作数指令;在有些性能更高的计算机 (甚至PC机)中,还有在指令中使用更多个操作数地址的指 令,用于完成对一批数据的处理过程,如字符串复制指令,
第 3章 8088/8086MPU的指令系统
第3章
8088/8086MPU的指令系统
3.1 指令与指令系统 3.2 寻址方式 3.3 8086指令系统 3.4 中断及中断返回
第3章复习题
第3章
8088/8086MPU的指令系统
计算机系统包括硬件和软件两大组成部分。硬件是指构
成计算机的中央处理机、主存储器、外部设备等物理装臵, 软件则指由软件厂家为方便用户使用计算机而提供的系统软 件,和用户用于完成自己的特定事务和信息处理任务而设计 的用户程序软件。 计算机能直接识别和运行的软件程序通常由该计算机的 指令代码组成。
据运算的指令等。
第3章
8088/8086MPU的指令系统
2.单操作数指令
有些指令只用一个操作数,必须在指令中指明其地址,
如一个寄存器内容增1或减1运算的指令;或还使用约定的某
个操作数,既已约定则无需再在指令中加以表示,如完成从 (向)外设读(写)数据的指令,就可以只在指令中指明该 外设地址,而把接受(送出)数据的通用寄存器约定下来。 此外,在短字长的、采用单个累加器的计算机中,已约定目
第3章 (BX) (SI) (DI)
8088/8086MPU的指令系统
PA=(DS)*10H+
+
DISP8 DISP16
DISP叫做位移量,实际上它是一个数值,可以是8位, 也可以是16位。
【例3-6】寄存器相对寻址应用 MOV AX,3000H[SI]
设指令执行前:DS=3000H,SI=2000H,
第3章
8088/8086MPU的指令系统
3.2 寻址方式
3.2.1 立即寻址方式
操作数作为指令的一部分而直接写在指令中,这种操作
数称为立即数,这种寻址方式也就称为立即数寻址方式。 【例3-1】MOV AX,1234H 注意:立即数不能能够作为目的操作数。 不能直接给段寄存器和标志寄存器赋予立即数。 这种寻址方式操作数在指令中。
8088/8086MPU的指令系统
8086指令系统(本课程的重点)
1.指令格式:指令助记符 [操作数1],[操作数2],[操作数3];注释
指令助记符: 该指令要完成的功能,就是指令的操作码;
操作数:该指令所需要的数据,可以没有; 注释:是为了方便阅读理解程序,可有可无。注释前要有分号 2. 8086指令系统分类 数据传送类指令;地址传送类指令;标志寄存器传送类指令;
第3章
8088/8086MPU的指令系统
3.2.2 寄存器寻址方式
指令所要的操作数已经在某寄存器中,表示指令时,或把
目标操作数存入寄存器。把在指令中指出所使用寄存器 (即:寄
存器的名字)的寻址方式称为寄存器寻址方式。 指令中可以引用的寄存器及其符号名称如下: 8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等; 16 位寄存器有: AX 、 BX 、 CX 、 DX 、 SI 、 DI 、 SP 、 BP 和段寄 存器等;
MOV CH,[BX+DI];物理地址 PA=(DS)*10H+(BX)+(DI)
注意:不能同时使用基址寄存器/变址寄存器;而且必须 基址寄存器在前,变址寄存器在后,顺序不能颠倒。 例如 MOV CL,[BX+BP]是错误的(同时使用基址寄存器,没有变址 寄存器)。该寻址方式多用于操作数组。
第3章
源操作数PA=(DS)*10H+(BX)+(SI)+FILE
MOV LIST[BP+SI],AX 目的操作数的PA=(SS)*10H+(BP)+(SI)+LIST
LIST是位移量;位移量可以放在括号[ ]内,也可以放在括号外。
第3章
8088/8086MPU的指令系统
5.相对基址加变址寻址方式
【例 3-7】设: DS=1000H , BX=2100H , SI=0010H; 内存单元 12310H 的内容为1234H, 表示为(12310H)=1234H 问题:执行指令 MOV AX,[BX+SI+200H]后,AX=?
5.相对基址加变址寻址方式
8088/8086MPU的指令系统
操作数的有效偏移地址是:基址 + 变址 + 位移量。一般用于寻址复 杂的数组中的元素。 MOV DH,[BX+DI+20H] 源操作数PA=(DS)*10H+BX+DI+20H; MOV AX,FILE[BX+SI] ;FILE为符号表示的位移量
8088/8086MPU的指令系统