第三章 操作数的寻址方式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2
一、立即数寻址方式(P24)
直接把参与操作的数据写在指令中,是指令的一部分, 该数据称为立即数。操作数可以是各种数制下的数值(8位或16 位二进制数),也可以是带单引号的字符。 例如:MOV AX,2050H MOV AL,05H MOV AL,‘A’ 观察下面指令中的错误: MOV 05H,AL MOV BL,324D MOV CH,2050H 注意:1.立即数永远不能作目的操作数。 2.源操作数和目的作码
操作数
2、说明:
操作码:每条指令必有。 操作数:不同的指令其操作数的个数不同 例如: MOV AX,2050H
在上面的MOV指令中,MOV是操作码,AX和2050H是操作 数。其中: AX是目的操作数, 2050H是源操作数。该指令的 作用是将2050H存入寄存器AX中。
7
四、寄存器间接寻址方式(P27)
把参与操作数的偏移地址写在寄存器中,而操作数在内 存中。物理地址的计算需要利用段寄存器。 偏移地址(或有效地址)通过寄存器间接给出,可用的 寄存器只能为BX、BP、SI、DI。 段寄存器可以指定,也可以不指定。如果没有指定段寄 存器,则使用默认的寄存器(BP对应SS,其余3个对应DS) 例1: MOV [BX],2050H 目的操作数[BX]是寄存器间接寻址方式。 例2: MOV AX,[BP] 原操作数[BP]是寄存器间接寻址方式。
答案: ① MOV AX, [ARRAY+8] ② MOV SI, ARRAY+8 MOV AX ,[SI] ③ MOV SI,8 MOV AX ,[ARRAY+SI] ④ MOV BX,ARRAY MOV SI ,8 MOV AX,[BX][SI]
17
例4:指令MOV AX,[BX] [SI] ( 或写为MOV AX,[BX+SI] ) 若(DS)=2000H,(BX)=0500H,(SI)=0010H, (2050FH)=00H,(20510H)=12H,(20511H)=34H, (20512H)=56H。则: ①偏移地址为多少? ②物理地址为多少? ③指令执行完后AX为多少?
9
例6:已知指令 MOV AX,[BX]。如果(DS)=3000H,(BX)=1010H, (31010H)=12H,(31011H)=24H,则操作数的物理地址为多少? 指令执行完后AX为多少? 答:物理地址=30000H+1010H=31010H,执行完后,(AX)=2412H
五、寄存器相对寻址方式(P28)
8
观察下面指令中的源操作数的地址计算方法:
例1:MOV AX,[BX] 源操作数的物理地址=DS×16+BX 例2: MOV AL,[BX] 源操作数的物理地址= DS×16+BX 例3: MOV AX,[SI] 源操作数的物理地址= DS×16+SI 例4: MOV AX,[DI] 源操作数的物理地址= DS×16+DI 例5: MOV AX,[BP] 源操作数的物理地址= SS×16+BP 例6: MOV AX,ES:[BX] 源操作数的物理地址= ES×16+BX
Assembly Language Programming
第三章 操作数的寻址方式
操作数是指令的处理对象。在指令中指定操作数或操 作数存放位置的方法称为寻址方式。寻址方式分三类共有7 种寻址方式。 1、操作数在指令中:立即数寻址 2、操作数在寄存器中:寄存器寻址 3、操作数在内存中: ①直接寻址 ②寄存器间接寻址 ③寄存器相对寻址 ④基址变址寻址 ⑤基址变址相对寻址
用一个基址寄存器(BX和BP)与一个变址寄存器(DI和SI) 的值相加后,再加一个相对量,将计算结果作为操作数的偏移 地址(根据基址寄存器确定段寄存器:BP对应SS,BX对应DS) 例1: MOV 例2: MOV AX,[BX+SI+10H] AX,[BP+DI+35H] 源操作数的物理地址=DS*16+BX+SI+10H
20
练习4:已知DS=2000H,BX=0100H,SI=0002H,存储 单元 [20100H] ~[20103H]依次存放12H、 34H、 56H、 78H,[21200H] ~[21203H]依次存放2AH、 4CH、 B7H、 65H,说明下列每条指令执行后AX寄存器的内容。 答: ① 1200H ①MOV AX,1200H
把参与操作数的偏移地址写在寄存器和一个相对位移量 中,而操作数在内存中。 偏移地址(或有效地址)通过寄存器间接给出,可用的 寄存器为BX、BP、SI、DI。 段寄存器可以指定,也可以不指定。如果没有指定段寄 存器,则使用默认的寄存器(BP对应SS,其余3个对应DS)
10
例1: MOV [BX+10H],2050H 源操作数的物理地址=DS*16+BX+10H 例2: MOV AX,[BP+15H] 源操作数的物理地址=SS*16+BP+15H
答:物理地址=20000H+0100H+00A0H=20000H+01A0H=201A0H
11
六、基址加变址寻址方式(P29)
用一个基址寄存器(BX和BP)与一个变址寄存器(DI和SI) 的值相加,计算结果作为操作数的偏移地址。
指令中 基址寄存器 变址寄存器 变址寄存器 变地址 段寄存器 段地址
基址寄存器 基地址
16970H
14920H + 2050H ──── 16970H
偏移地址 操作码
6
例2:假设 TABLE是在数据段定义的一个字节数组的首地址标号 (变量名),其偏移地址为1000H,则: 1、三条指令: ①MOV AL,TABLE ② MOV AL,[TABLE] ③MOV AL,[1000H]是等效的,它们都是直接寻址方式。 2、三条指令:①MOV AL,TABLE+2 ②MOV AL,[TABLE+2] ③MOV AL,[1000H+2] 也是等效的。
19
练习3:给定 BX=637DH,SI=2A9BH,偏移量=7237H,试确 定在以下各种寻址方式下的偏移地址是什么? ①直接寻址:_____________ ②使用BX的间接寻址:_____________ ③使用BX的寄存器相对寻址:_____________ ④基址变址寻址:_____________ ⑤基址变址相对寻址:_____________ 答: ①=7237H ②=637DH ③=637DH+7237H ④=637DH+2A9BH ⑤=637DH+2A9BH+7237H
DS寄存器 段地址 指令 偏移地址 存储器 操作数
例1: MOV AX,[2050H] 原操作数 [2050H] 是直接寻址方式。
5
指令MOV
AX,[2050H]的示意图
AH
AL
DS: 1492H
×16
55H AAH . . . 代 码 段 20H 50H A1H
数 据 段
执行结果 AX=AA55H
例3:假设TABLE是在数据段定义的一个字节数组的首地址标号 (变量名),其偏移地址为1000H,则下面四条指令: ①MOV AL,ES:TABLE ② MOV AL, ES:[TABLE] ③MOV AL, ES:[1000H] ④ MOV AL, ES:1000H 是等效的,它们都是直接寻址方式。 物理地址=ES*10H+1000H
③MOV AX,TABLE[BX]
④MOV AX,[BP] ⑤MOV AX,[BP][SI]
④ 10010H
⑤ 10012H
16
例3:假设ARRAY是字数组的首地址,写出将第5个字元素取 出送AX寄存器的指令,要求使用以下几种寻址方式: ①直接寻址 ②寄存器间接寻址 ③寄存器相对寻址 ④基址变址寻址
例2: MOV AX,[BX] [SI] 或写为: MOV AX,[BX+SI], 若(DS)=2000H,(BX)=0500H,(SI)=0010H,则偏移地址为多 少?物理地址为多少?
答:偏移地址=0500H+0010H=0510H 物理地址==20000H+0510H=20510H
13
七、基址加变址加相对寻址方式(P30)
答案:① 偏移地址= 0500H+0010H=0510H
② 物理地址= 20000H+0510H=20510H ③ 执行完后AX=3412H
18
作业与练习
作业:P33 ~ P34 第 2、5、6题(做到书上)
练习1:设(DS)=2000H,(BX)=0100H,(SS)=1000H, (BP)=0010H,TABLE的物理地址为2000AH,(SI)=0002H。 求下列每条指令源操作数的存储单元地址。 MOV AX,[1234H] MOV AX,[BX] MOV AX,TABLE[BX] MOV AX,[BP] MOV AX,[BP][SI]
15
例2:假设TABLE的物理地址为2000AH,(DS)=2000H, (BX)=0100H,(SS)=1000H, (BP)=0010H, (SI)=0002H, 求下列每条指令源操作数的存储单元地址。
①MOV AX,[1234H]
②MOV AX,[BX]
答: ① 21234H ② 20100H ③ 4010AH
②MOV AX,BX
③MOV AX,[1200H] ④MOV AX,[BX] ⑤MOV AX,[BX+1100H] ⑥MOV AX,[BX+SI]
② 0100H
③ ④ ⑤ ⑥ ⑦
21
⑦MOV AX,[BX][SI+1100H]
3
二、寄存器寻址方式(P25)
参与操作的数据寄存器中。在语句格式中表示为寄存器 名。比如:AL,BX,CX,DS,IP等等。 例1: MOV AX,2050H 目的操作数AX是寄存器寻址方式。 例2: MOV BX,AX 上面指令中的AX和BX都是寄存器寻址方式。
4
三、直接寻址方式(P25)
把参与操作的数据的偏移地址写在指令中,而操作数在 内存中。物理地址的计算需要利用段寄存器(默认为DS)。
例3:把TABLE是在数据段定义的一个字节数组的首地址标号 (也称变量名),又设:MOV SI,5 则指令:MOV AL,TABLE[SI] 是寄存器相对寻址 指令也可写成:MOV AL,[TABLE+SI] 例4:TABLE是数据段中定义的一个变量,假设它在数据段中的 偏移地址为0100H,有指令:MOV AX,TABLE[SI] ,若 (DS)=2000H,(SI)=00A0H,(201A0H)=12H,(201A1H)=34H,则 物理地址物理地址为多少?
偏移地址
存储器 操作数
注意:
①允许段超越。 ②[BX+BP]或[SI+DI]是非法搭配。 ③根据基址寄存器确定段寄存器:BP对应SS,BX对应DS
12
例1:写出下面指令中的源操作数的物理地址计算方法 1、MOV AX,[BX+SI] 或者 MOV AX,[SI+BX] 答:源操作数的物理地址=DS*16+BX+SI 2、MOV AX,[BP+DI] 或者 MOV AX,[BP][DI] 答:源操作数的物理地址=SS*16+BP+DI
源操作数的物理地址=SS*16+BP+DI+35H
注意:①允许段超越。 ②[BX+BP]或[SI+DI]是非法搭配。
14
习题讲解
例1:指出下列MOV指令的源操作数的寻址方式(TABLE是 一个变量名)(提示:TABLE代表地址) ①MOV ②MOV ③MOV ④MOV ⑤MOV ⑥MOV ⑦MOV ⑧MOV ⑨MOV AX,1234H AX,BX AX,[BX] AX,TABLE AX,[1234H] AX,[BX+1234H] AX,[BP][SI] AX,[BX+SI-1234H] AX,[TABLE] ①立即数寻址 ②寄存器寻址 ③寄存器间接寻址 ④直接寻址 ⑤直接寻址 ⑥寄存器相对寻址 ⑦基址变址寻址 ⑧基址变址相对寻址 ⑨直接寻址
相关文档
最新文档