当前位置:文档之家› 8086操作数的寻址方式解析

8086操作数的寻址方式解析

2
第三章 操作数的寻址方式
一、立即数寻址方式
直接把参与操作的数据写在指令中,是指令的一部分, 该数据称为立即数。操作数可以是各种数制下的数值(8位或16 位二进制数),也可以是带单引号的字符。 例如:MOV AX,2050H MOV AL,05H 观察下面指令中的错误: MOV AL,‘A’ MOV 05H,AL MOV BL,324D MOV CH,2050H 注意:1.立即数永远不能作目的操作数。 3 2.源操作数和目的操作数要互相匹配。
1
第三章 操作数的寻址方式
1、微机指令格式(补充):操作码 2、说明:
操作码:每条指令必有。
操作数
操作数:不同的指令其操作数的个数不同 例如: MOV AX,2050H
在上面的MOV指令中,MOV是操作码,AX和2050H是操作 数。其中: AX是目的操作数, 2050H是源操作数。该指令的 作用是将2050H存入寄存器AX中。
第三章 操作数的寻址方式
通信工程02班 汤林 1204140218
0
第三章 操作数的寻址方式 操作数是指令的处理对象。在指令中指定操作数或操 作数存放位置的方法称为寻址方式。寻址方式分三类共有7 种寻址方式。 1、操作数在指令中:立即数寻址 2、操作数在寄存器中:寄存器寻址 3、操作数在内存中: ①直接寻址 ②寄存器间接寻址 ③寄存器相对寻址 ④基址变址寻址 ⑤基址变址相对寻址
五、寄存器相对寻址方式
把参与操作数的偏移地址写在寄存器和一个相对位移量 中,而操作数在内存中。 偏移地址(或有效地址)通过寄存器间接给出,可用的 寄存器为BX、BP、SI、DI。 段寄存器可以指定,也可以不指定。如果没有指定段寄 10 存器,则使用默认的寄存器(BP对应SS,其余3个对应DS)
第三章 操作数的寻址方式
第三章 操作数的寻址方式
观察下面指令中的源操作数的地址计算方法:
例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]
第三章 操作数的寻址方式
四、寄存器间接寻址方式
把参与操作数的偏移地址写在寄存器中,而操作数在内 存中。物理地址的计算需要利用段寄存器。 偏移地址(或有效地址)通过寄存器间接给出,可用的 寄存器只能为BX、BP、SI、DI。 段寄存器可以指定,也可以不指定。如果没有指定段寄 存器,则使用默认的寄存器(BP对应SS,其余3个对应DS) 例1: MOV [BX],2050H 目的操作数[BX]是寄存器间接寻址方式。 例2: MOV AX,[BP] 原操作数[BP]是寄存器间接寻址方式。 8
AHALΒιβλιοθήκη 段数 据DS: 1492H
×16
14920H + 2050H ──── 16970H
代 码 段
55H AAH . . . 20H 50H A1H
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] 也是等效的。 例3:假设TABLE是在数据段定义的一个字节数组的首地址标号 (变量名),其偏移地址为1000H,则下面四条指令: ①MOV AL,ES:TABLE ② MOV AL, ES:[TABLE] ③MOV AL, ES:[1000H] ④ MOV AL, ES:1000H 是等效的,它们都是直接寻址方式。 7 物理地址=ES*10H+1000H
第三章 操作数的寻址方式
二、寄存器寻址方式
参与操作的数据寄存器中。在语句格式中表示为寄存器 名。比如:AL,BX,CX,DS,IP等等。 例1: MOV AX,2050H 目的操作数AX是寄存器寻址方式。 例2: MOV BX,AX 上面指令中的AX和BX都是寄存器寻址方式。
4
第三章 操作数的寻址方式
例1: MOV [BX+10H],2050H 源操作数的物理地址=DS*16+BX+10H 例2: MOV AX,[BP+15H] 源操作数的物理地址=SS*16+BP+15H 例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,则 物理地址物理地址为多少? 答:物理地址=20000H+0100H+00A0H=20000H+01A0H=201A0H 11
三、直接寻址方式
把参与操作的数据的偏移地址写在指令中,而操作数在 内存中。物理地址的计算需要利用段寄存器(默认为DS)。
DS寄存器 段地址
指令 偏移地址
存储器 操作数
例1: MOV AX,[2050H] 原操作数 [2050H] 是直接寻址方式。
5
第三章 操作数的寻址方式
指令MOV AX,[2050H]的示意图 执行结果 AX=AA55H
9
第三章 操作数的寻址方式
例6:已知指令 MOV AX,[BX]。如果(DS)=3000H,(BX)=1010H, (31010H)=12H,(31011H)=24H,则操作数的物理地址为多少? 指令执行完后AX为多少? 答:物理地址=30000H+1010H=31010H,执行完后,(AX)=2412H
相关主题