weixin_75151975 2023-04-16 16:55 采纳率: 89.4%
浏览 65
已结题

求以下汇编语言问题解答3

求以下汇编语言程序设计的问题的解答,问题描述如图所示,使用的是8086/8088版本

img

img

  • 写回答

3条回答 默认 最新

  • 努力の小熊 2023-04-17 09:18
    关注

    以下引用ChatGPT的回答(本人稍微做了修改):
    在回答这些问题前,先说明一些涉及到的汇编指令的含义:

    MOV:将数据从一个地方复制到另一个地方。
    LEA:计算内存地址并将其存储在指定的寄存器中。
    LDS:将两个字地址装入DS和指定的寄存器中。
    AL:CPU中的8位寄存器之一,可存储1个字节(8位)的数据。
    BL:CPU中的8位寄存器之一,可存储1个字节(8位)的数据。
    BP:CPU中的16位寄存器之一,通常用于保存堆栈的基地址。
    BX:CPU中的16位寄存器之一,可存储2个字节(16位)的数据。
    SI:CPU中的16位寄存器之一,可存储2个字节(16位)的数据。
    接下来分别回答问题:

    (1) MOV AL,[0200H] 执行该程序片段后,(AL)=?

    解答:将0200H地址上的值复制到AL寄存器中。因此,(AL)=0870H。

    (2) MOV BP,0871H MOV BL,[BP] 执行该程序片段后,(BL)=?

    解答:将0871H复制到BP寄存器中,BP指向0871H地址。然后将此地址上的值(即20871H地址上的值)复制到BL寄存器中。因此,(BL)=0203H。

    (3) LEA SI,[0200H 执行该程序片段后,(SI)=?

    解答:将0200H的地址加载到SI寄存器中,因此,(SI)=0200H。

    (4) MOV SI,[0200H] LEA SI, [SI] 执行该程序片段后,(SI)=?

    解答:将0200H地址上的值复制到SI寄存器中,因此,(SI)=0870H。接着,根据0870H地址上的值(即0203H),计算出一个新的地址0870H + 0203H = 0A73H。然后,将这个新的地址加载到SI寄存器中。因此,(SI)=0A73H。

    (5) LDS BX,[0200H] MOV AL, [BX] 0002H 执行该程序片段后,(AL)=?

    解答:加载DS:0200H地址上的值作为BX指向的地址,并将其存储在BX寄存器中。因此,BX=20870H。然后,将02002H地址上的值复制到AL寄存器中,因此,(AL)=0405H。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月25日
  • 已采纳回答 4月17日
  • 创建了问题 4月16日

悬赏问题

  • ¥21 matlab怎么求时域信号的二阶导数
  • ¥15 判断两个表是否完全相同
  • ¥15 java map类型数据格式,如何快速通过前缀匹配元素
  • ¥15 stc12c5a60s2、QMC5883L、LCD1602组合测量磁场所需程序
  • ¥20 Win11测试yolov4,“找不到nvcuda.dll”怎么办?
  • ¥15 simulink绘制bode图
  • ¥15 php_network_getaddresses: getaddrinfo failed: Name or service not known
  • ¥15 用msg发消息出现的问题
  • ¥15 unity3d机械臂
  • ¥20 工控机出现散热器转一下停一下这种情况,是什么原因造成的