- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
…
MOV AX, AREA1 (或 MOV AX, [AREA1])
115-150
AREA1定义为变量,符号 AREA1为变量名
19
四、 寄存器间接寻址
操作数的偏移地址(有效地址EA)放在寄存器中 只有SI、DI、BX和BP可作间接寻址的寄存器
(BX) (BP) (SI) (DI)
基址寄存器
操作数的有效地址由一个基址寄存器和一个变址 寄存器的内容之和,两个寄存器均由指令指定,称 为基址-变址寻址。
EA =
(BX) (BP)
+
(SI)
(DI)
同一组内的寄存器不能同时出现。
27
115-150
例: MOV MOV MOV 错误例: × MOV × MOV
AX, [BX] [SI](默认段DS) AX, [BX+SI] AX, DS: [BP] [DI](默认段SS) AX, [BX] [BP] AX, [DI] [SI]
二维数组例:内存图示(按行存储)
A=
115-150
1 8 3 2 5 2 4 0 9
32
八、其他
1、隐含寻址
指令操作数是隐含的,在指令中未显式地指明。
例:MUL BL
(AL)×(BL)→AX
指令隐含了被乘数AL及乘积AX 类似的指令还有:DAA、DIV、CBW、MOVS等
115-150
33
2、 I/O端口寻址
115-150 2
二、指令系统 (Instruction System):
计算机所能执行的全部指令。
三、程序 (Program):
完成某个特定任务而编制的一系列指 令的有序集合。
程序的执行一般是按指令的先后次序一条一 条执行,但遇到转移类指令时则可能改变指令的 执行次序。
115-150 3
四、指令包含的基本内容
变址寄存器
EA =
例: MOV AX, [BX] MOV CL, CS:[DI] 错误例 : × MOV AX, [DX] × MOV CL, [AX] 115-150
20
• 若单独使用基址寄存器或变址寄存器,则分别称为基址寻
址和变址寻址。如果同时使用基址寄存器或变址寄存器则 称为基址加变址寄存器间接寻址。在基址加变址的寻址方
错误例:
AL, 26H CX, 2A50H 2A00H, AX ; 错误!
13
× MOV
115-150
指令操作例:MOV AX,3102H
; AX
3102H
执行后,(AH) = 31H,(AL) = 02H
立即寻址指令在存 储器中的存放形式: 高字节存放在高地 址中,低字节存放 在低地址中
存储器
AX AH AL MOV操作码 代 码 段
寻址方式 寄存器间接 寄存器相对 基址—变址 相对基址-变址 指令操作数形式 只有一个寄存器(BX/BP/SI/DI之一) 一个寄存器加上位移量 两个不同类别的寄存器 两个不同类别的寄存器加上位移量
默认的段寄存器为DS,但也可以显式地指定其他 段寄存器——称为段超越前缀
偏移地址也可用符号地址来表示,如ADDR、VAR 例:
MOV
MOV MOV
AX , [2A00H]
DX , ES: [2A00H] (段超越前缀) SI , TABLE_PTR
17
115-150
指令操作例:MOV AX,[3102H]
五、寄存器相对寻址
EA=间址寄存器的内容加上一个8/16位的位移量
(BX)
EA =
(BP) (SI) (DI)
+
8位
16位
位移量
若指令中指定的寄存器是SI、 DI或BX则默认段基址在 DS中,若指定BP寄存器间接寻址,则默认段基址在SS 中。
115-150 24
例: MOV AX, [BX+8] MOV CX, [SI+10H] MOV AX, [BP+1000H] ; 默认段寄存器为SS 指令操作例:MOV AX,DATA[BX]
位移量
MOV AX,BASE [SI] [BX]
MOV AX,[BX+BASE] [SI]
MOV AX,[BX+SI+BASE] MOV AX,[BX] BASE [SI]
MOV AX,[BX+SI] BASE
115-150 30
指令操作例:MOV AX,DATA[DI][BX]
若(DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=200H 则指令执行后(AH)=[83201H], (AL)=[83200H]
AL (3102H) , AH (3103H)
如果(DS)=2000H, (23012H) = CDH, (23013H) = ABH 则操作数的物理地址为: 存储器 20000H+3102H = 23102H 指令执行后:(AX) = ABCDH
AH
AL
23102H
MOV操作码 02H 31H
代 码 段
115-150
35
小结
指令由( 操作码 )和( 操作数 )构成 如何取得操作数——称为(寻址方式)
115-150
36
立即寻址 直接寻址 寄存器寻址 寻址方式可分为
寄存器间接寻址
寄存器相对寻址 基址-变址寻址 基址-变址相对寻址
115-150
37
寄存器间接、寄存器相对、基址变址、相对 基址变址四种寻址方式的比较:
有直接端口和间接端口两种寻址方式
(1) 直接端口寻址
端口地址由指令直接提供,它是一个8位立即 数,所以寻址范围:00~FFH
例:IN AL,80H 操作:从端口地址为80H的端口输入一字 节送AL。
115-150
34
(2) 间接端口寻址
被寻址的端口号由寄存器DX提供,所以寻址 范围:0000~FFFFH 例: MOV DX,213H IN AL,DX 操作:从端口地址为213H的端口输入一字 节送AL。
61200
AX 33H 44H
115-150
61200H
44H
33H
数 据 段
22
指令中也可以指定段超越前缀来从默认段以外的 段中取得数据。
例:MOV BX, DS:[BP] 源操作数的物理地址:16×DS+BP MOV AX, ES:[SI]
源操作数的物理地址:16×ES+SI
115-150
23
8000 2000 1000
操作码
. .
代码段
83000 83000H
AX AH
115-150
. . .
AL
YY XX 数据段
. . .
29
七、相对的基址-变址寻址
在基址-变址寻址的基础上再加上一个相对位移量 同一组内的寄存器不能同时出现。
EA =
例:
(BX)
(BP)
+
(SI)
(DI)
+
8位
16位
若(DS)=6000H, (BX)=1000H, DATA=2A00H, (63A00H)=66H, (63A01H)=55H
则物理地址 = 60000H + 1000H + 2A00H = 63A00H
指令执行后:(AX)=5566H
(见下页图示)
115-150 25
MOV AX,DATA[BX]
DS 8000 BX 2000 DI 1000
. . .
操作码 代 码 段
+ DATA 0200
83200 83200H
. . .
YY XX
AX
115-150
AH
AL
. . .
数 据 段
31
使用相对的基址-变址寻址方式可以很方便地访 问二维数组。
位移量
基址寄存器 变址寄存器
数组首地址
(偏移地址)
数组元素行址 (行位移地址) 数组元素列址 (行内元素下标)
若使用[BP]间接寻址,则默认段基址在SS中。
115-150 21
指令操作例:MOV AX,[SI]
若 (DS)=6000H, (SI)=1200H, (61200H)=44H, (61201H)=33H
则指令执行后,(AX)=3344H。 DS 6000 SI 1200
存储器
60000 +) 1200
立 即 数
操作码 低8位
02H
代 码 段
高8位
31H
115-150
14
二、 寄存器寻址
操作数包含在寄存器中,由指令指定寄存器的名称
源操作数与目的操作数字长要相同
寄存器寻址与段地址无关 例: MOV MOV MOV 错误例: × MOV × MOV AX, BX [3F00H], AX CL, AL AX, BL ES: AX, DX ; 字长不同 ; 寄存器与段无关
1. 做什么操作 由指令的操作码字段规定。 2. 操作数的来源 操作数来自于什么地方。由指令的操作 数字段规定。
115-150
4
操作数的来源可以是:
a. CPU内的某个寄存器; b. 存储器内的某一个或几个单元;
c. I/O端口。
115-150
5
3. 操作结果的去向 操作的结果将存放在何处。
4. 下一条指令的位置
115-150
28
指令操作例:MOV AX,[BX][SI]
假定:(DS)=8000H, (BX)=2000H, SI=1000H 则物理地址 = 80000H + 2000H + 1000H = 83000H 指令执行后: (AL)=[83000H] (AH)=[83001H] .