正在加载图片...
转向的有效地址是当前IP寄存器的内容和指令中指定的8位或16位位移量之和。如下 图: 指令 IF寄存器 这种方式的转向有效地址用相对于当前IP值的位移量来表示,所以它是一种相对寻址 方式。指令中的位移量是转向的有效地址与当前IP值之差,所以当这一程序段在内存中的 不同区域运行时,这种寻址方式的转移指令本身不会发生变化,这是符合程序的再定位要求 的。这种寻址方式用于条件转移和无条件转移指令,但是,当它用于条件转移时,位移量只 允许8位。无条件转移指令在位移量为8位时,叫短跳转 指令的汇编语言格式为 JMP NEAR PTR PROGIA JMP SHORT QUEST 其中, PROGIA和 QUEST均为转向的符号地址,在机器指令中,用位移量来表示。在汇编 指令中,如果位移量为16位,则在符号地址前加操作符 NEAR PTR。如果位移量为8位, 则在符号地址前加操作符 SHORT。 (二)段内间接寻址 转向有效地址是一个寄存器或是存储单元的内容,这个寄存器或存储单元的内容可以 用数据寻址方式中除立即数以外的任何一种寻址方式取得,所得到的转向的有效地址用来取 代IP寄存器的内容。此种寻址方式如下图所示。 寄存器 指令[很据数据寻址}一转向的有效地址 据寻盐方式方式计算出EA或 转向的有效地址 存储单元 注意:这种寻址方式以及以下的两种段间寻址方式都不能用于条件转移指令。也就是说 条件转移指令只能使用段内直接寻址的8位位移量,而JMP和CALL指令则可以使用任何 跳转方式。 段内间接寻址转移指令的汇编格式可以表示为 MP WORD PTR[BP+TABLE 等。其中 WORD PTR又称为操作符(伪),用以指出其后的寻址方式所取得的转向地址是 个字的有效地址,也就是说它是一种段内转移 以上两种寻址方式均为段内转移,所以直接把求得的转移的有效地址送到PP寄存 器就可以了。如果需要计算转移的物理地址,则计算公式应该是 物理地址=16d×(CS)十EA 其中EA即为上述转移的有效地址 下面举例说明在段内间接寻址方式的转移指令中,转移的有效地址的计算方法转向的有效地址是当前 IP 寄存器的内容和指令中指定的 8 位或 16 位位移量之和。如下 图: 这种方式的转向有效地址用相对于当前 IP 值的位移量来表示,所以它是一种相对寻址 方式。指令中的位移量是转向的有效地址与当前 IP 值之差,所以当这一程序段在内存中的 不同区域运行时,这种寻址方式的转移指令本身不会发生变化,这是符合程序的再定位要求 的。这种寻址方式用于条件转移和无条件转移指令,但是,当它用于条件转移时,位移量只 允许 8 位。无条件转移指令在位移量为 8 位时,叫短跳转。 指令的汇编语言格式为: JMP NEAR PTR PROGIA JMP SHORT QUEST 其中,PROGIA 和 QUEST 均为转向的符号地址,在机器指令中,用位移量来表示。在汇编 指令中,如果位移量为 16 位,则在符号地址前加操作符 NEAR PTR。如果位移量为 8 位, 则在符号地址前加操作符 SHORT。 (二)段内间接寻址 转向有效地址是一个寄存器或是存储单元的内容,这个寄存器或存储单元的内容可以 用数据寻址方式中除立即数以外的任何一种寻址方式取得,所得到的转向的有效地址用来取 代 IP 寄存器的内容。此种寻址方式如下图所示。 注意:这种寻址方式以及以下的两种段间寻址方式都不能用于条件转移指令。也就是说, 条件转移指令只能使用段内直接寻址的 8 位位移量,而 JMP 和 CALL 指令则可以使用任何 跳转方式。 段内间接寻址转移指令的汇编格式可以表示为 JMP BX JMP WORD PTR[BP+TABLE] 等。其中 WORD PTR 又称为操作符(伪),用以指出其后的寻址方式所取得的转向地址是 一个字的有效地址,也就是说它是一种段内转移。 以上两种寻址方式均为段内转移,所以直接把求得的转移的有效地址送到 IP 寄存 器就可以了。如果需要计算转移的物理地址,则计算公式应该是: 物理地址=l 6d×(CS)十 EA 其中 EA 即为上述转移的有效地址。 下面举例说明在段内间接寻址方式的转移指令中,转移的有效地址的计算方法
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有