【汇编】与转移地址有关的寻址方式

与转移地址有关的寻址方式

与转移地址有关的寻址方式是用来确定转移及调用指令(如跳转指令 JMP 或调用指令 CALL)的目标地址的方式 ,这些指令的作用是使程序从当前位置跳转到另一个位置,或者调用一个函数或子程序,然后在执行完跳转或调用指令之后,程序的控制权就会转移到目标地址处

段内寻址

段内直接寻址

直接给出立即数或者符号地址

汇编格式JMP SHORT QUEST
JMP NEAR PTR PROGIA

转向的有效地址 = (IP) + 位移量(8bit/16bit)
         1060:000D EB04 JMP SHORT NEXT
   IP当前值→ 1060:000F … …
         1060:0011 … …
         1060:0013 0207 NEXT: ADD AL,[BX]

CPU在执行JMP指令时,IP指向了下一条指令,其值为000FJMP SHORT NEXT指令的机器语言为EB04EB为操作码,04为位移量,所以转向的有效地址应为:
            000F + 0004 = 0013

0013正是标号NEXT的地址。JMP指令执行后,将IP寄存器修改为0013,代码段寄存器CS不变。紧接着CPU根据CS:IP的指示,取出1060:0013中的ADD指令开始执行,这样实现了程序的转移

例题

在 0624H 单元内有一条二字节指令JMP SHORT OBJ,如其中位移量为 (1) 27H,(2)6BH,(3)0C6H 试问转向地址OBJ的值是多少?

【解】此时IP寄存器中的值为:(IP) = 0626H
(1) (IP) = 0626H + 27H = 064DH
(2) (IP) = 0626H + 6BH = 0691H
(3) C6H为负数(-3AH),(IP) = 0626H - 3AH = 05ECH

【(3) 分析】在一个字节(8位)的情况下,对于有符号数,其范围是从-128到127(即从 80H 到 7FH),换言之,当一个字节的最高位为1时,这个字节所表示的数值是负数,C6H对应的的十进制数是198,最高位为1,表示的数值是负数,需要计算得其补码,需要进行取反操作,然后再加1,结果为 -3AH

段内间接寻址

转向的有效地址是一个寄存器存储单元的内容

可以用除立即数以外的任何一种数据寻址方式

汇编格式JMP BX
JMP WORD PTR TABLE[BX]
JMP WORD PTR [BX][SI]

因为程序的转移仍在同一段内进行,所以只需将IP修改成新的转向地址,CS不变。段内转移指令中的NEAR PTR是可以缺省的

例题

给定 (IP) = 2BC0H,(CS)=0200H,位移量 D = 5119H ,(BX) = 1200H,(DS) = 212AH,(224A0) = 0600H,(275B9) = 098AH,试为以下的转移地址指令找出转移的偏移地址
(1)使用 BX 及寄存器间接寻址方式的段内间接寻址
(2)使用 BX 及寄存器相对寻址方式的段内间接寻址

【解】 (1) JMP WORD PTR [BX]
PA = 212AH × 16d + (BX) = 224A0H,(IP) = 0600H
(2) JMP WORD PTR D[BX]
PA = 212AH ×16d + (BX) + 5119H = 275B9H,(IP) = 098AH

段间寻址

段间直接寻址

指令中提供的转向段地址偏移地址取代 CS 和 IP 寄存器的值

因为是段间转移,CS和IP都要更新,这个新的段地址和偏移地址由指令操作码之后的连续两个字提供,所以只要将指令中提供的转向偏移地址装入IP,转向段地址装入CS,就完成了从一个段到另一个段转移的工作

汇编格式JMP FAR PTR NEXT

段间间接寻址

存储器相继两个字的内容取代 CS 和 IP 寄存器的值

存储单元的地址可用存储器寻址方式得到

汇编格式JMP DWORD PTR [SI]
JMP DWORD PTR [INTERS+BX]

例题

【例1】

在这里插入图片描述
【例2】

在这里插入图片描述
参考文章

汇编语言学习笔记之与转移地址有关的寻址方式

  • 25
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值