前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【计算物理地址】计算存储器操作数的物理地址时候如何选择DS还是SS

【计算物理地址】计算存储器操作数的物理地址时候如何选择DS还是SS

作者头像
命运之光
发布2024-09-23 08:09:04
850
发布2024-09-23 08:09:04
举报
文章被收录于专栏:我在本科期间写的文章

先看例题

DS=3000H,ES=4000H,SS=5000H,BX=0300H,BP=0050H,SI=0200H计算下列指令中存储器类型操作数的物理地址。(1)MOV AL,[BP+5] (2)ADD AL,5[BX+SI] (3)MOV BP,[2000H](4)ADD [BP][SI]+20H,AX并详细解释如何选择DS还是SS


要计算给定指令中的存储器类型操作数的物理地址,我们需要理解如何通过段寄存器偏移寄存器来组合形成物理地址。通常,在8086微处理器中,物理地址由段寄存器内容乘以16,再加上偏移量来计算。具体地说:

  • 段寄存器可以是:DS(数据段寄存器)、ES(附加段寄存器)、SS(栈段寄存器)等。
  • 偏移寄存器可以是:BXBPSIDI等。
解释段选择规则

通常情况下:

  • 使用SS段:如果操作数涉及BP寄存器,则默认使用SS作为段寄存器。
  • 使用DS段:如果操作数不涉及BP寄存器,则默认使用DS作为段寄存器。

接下来我们逐条分析并计算物理地址:


1. MOV AL,[BP+5]
  • 段寄存器:由于BP寄存器参与计算,所以段寄存器为SS
  • 段基值SS = 5000H
  • 偏移量BP + 5 = 0050H + 5 = 0055H
  • 物理地址(SS * 16) + (BP + 5) = 5000H * 10H + 0055H = 50000H + 0055H = 50055H

因此,物理地址是50055H


2. ADD AL,5[BX+SI]
  • 段寄存器:此操作数不涉及BP,因此段寄存器为DS
  • 段基值DS = 3000H
  • 偏移量BX + SI + 5 = 0300H + 0200H + 5 = 0505H
  • 物理地址(DS * 16) + (BX + SI + 5) = 3000H * 10H + 0505H = 30000H + 0505H = 30505H

因此,物理地址是30505H


3. MOV BP,[2000H]
  • 段寄存器:此指令中的偏移量是显式的(2000H),没有使用BP或其他偏移寄存器,所以段寄存器为默认的DS
  • 段基值DS = 3000H
  • 偏移量2000H
  • 物理地址(DS * 16) + 2000H = 3000H * 10H + 2000H = 30000H + 2000H = 32000H

因此,物理地址是32000H


4. ADD [BP][SI]+20H,AX
  • 段寄存器:因为涉及到BP寄存器,所以段寄存器为SS
  • 段基值SS = 5000H
  • 偏移量BP + SI + 20H = 0050H + 0200H + 20H = 0270H
  • 物理地址(SS * 16) + (BP + SI + 20H) = 5000H * 10H + 0270H = 50000H + 0270H = 50270H

因此,物理地址是50270H


总结
  1. MOV AL,[BP+5]: 物理地址 = 50055H (使用SS)
  2. ADD AL,5[BX+SI]: 物理地址 = 30505H (使用DS)
  3. MOV BP,[2000H]: 物理地址 = 32000H (使用DS)
  4. ADD [BP][SI]+20H,AX: 物理地址 = 50270H (使用SS)

在计算物理地址时,选择DS还是SS的关键在于是否使用了BP寄存器:如果使用BP,则默认使用SS;否则使用DS

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先看例题
    • 解释段选择规则
      • 1. MOV AL,[BP+5]
        • 2. ADD AL,5[BX+SI]
          • 3. MOV BP,[2000H]
            • 4. ADD [BP][SI]+20H,AX
              • 总结
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档