weixin_75151975 2023-04-16 16:31 采纳率: 90.6%
浏览 28
已结题

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

求以下汇编语言问题的解答,问题描述如图,使用的是8086和8088版本

img

  • 写回答

3条回答 默认 最新

  • 努力の小熊 全国大学生物联网技术与应用大赛获奖者 2023-04-16 16:54
    关注

    (1) MOV AL, 08H

    寻址方式:立即寻址
    说明:将立即数 08H 移动到 AL 寄存器。
    (2) MoV [0120H], BL

    寻址方式:直接寻址
    EA 计算公式:EA = 0120H
    段寄存器:DS
    说明:将 BL 寄存器的内容移动到内存地址 0120H 处。
    (3) ADD [BX], AL

    寻址方式:基址寻址
    EA 计算公式:EA = BX
    段寄存器:DS
    说明:将 AL 寄存器的值与基址寄存器 BX 指向的内存单元的值相加,结果存储在 BX 指向的内存单元中。
    (4) PUSH WORD PTR [SI+0200H]

    寻址方式:变址寻址
    EA 计算公式:EA = SI + 0200H
    段寄存器:DS
    说明:将 DS:SI+0200H 处的字压入堆栈。
    (5) SUB AX, [BP]

    寻址方式:基址寻址
    EA 计算公式:EA = BP
    段寄存器:SS
    说明:将 AX 寄存器的值减去基址寄存器 BP 指向的内存单元的值,结果存储在 AX 寄存器中。
    (6) AND BYTE PTR [VAR1+4], DL

    寻址方式:基址变址寻址
    EA 计算公式:EA = (VAR1 + 4)
    段寄存器:DS
    说明:将内存地址 (VAR1 + 4) 处的值与 DL 寄存器的值进行逻辑与操作,结果存储在内存地址 (VAR1 + 4) 处。
    (7) PUSHF

    寻址方式:无
    说明:将标志寄存器的内容压入堆栈。
    (8) MOV ES:[BX+0100H], AL

    寻址方式:基址寻址
    EA 计算公式:EA = BX + 0100H
    段寄存器:ES
    说明:将 AL 寄存器的值移动到 ES 段中,BX+0100H 处的内存地址。
    (9) ADC BYTE PTR [BP+SI+0210H], 45H

    寻址方式:基址变址寻址
    EA 计算公式:EA = BP + SI + 0210H
    段寄存器:DS
    说明:将 DS:(BP + SI + 0210H) 处的值与立即数 45H 相加,加上进位标志 CF 的值,结果存储在 DS:(BP + SI + 0210H) 处的内存地址。

    (10) OR BYTE PTR [ARRY+BX+DI], CL

    寻址方式:基址变址寻址
    EA 计算公式:EA = ARRY + BX + DI
    段寄存器:DS
    说明:将 DS:(ARRY + BX + DI) 处的值与 CL 寄存器的值进行逻辑或操作,结果存储在 DS:(ARRY + BX + DI) 处的内存地址。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 有问必答小助手 2023-04-16 16:57
    关注
    您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
    PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-16 23:43
    关注
    • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7666316
    • 你也可以参考下这篇文章:从键盘输入一个正整数,按数字的相反顺序输出
    • 除此之外, 这篇博客: 8086中实地址模式下的存储器寻址详解中的 数据段和附加段重叠的情形 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 要将内存某区间的一组数据复制到内存的另一区间:

      在进行数据的转移操作时,我们常常是“数据段和附加段结合在一起使用”:

      用DS:[SI]表示源数据区数据存储单元的地址,用 ES:[DI]表示目的数据区数据存储单元的地址。假设 DS=250AH,ES=2EF0H,执行以下程序段,可将源数据区的100个字(Word)数据复制到目的数据区:

      MOV CX, 100 ;在计数寄存器CX中设置循环次数  
      MOV SI,1 ;操作对象的源地址(相对地址)  
      MOV DI,1 ;操作对象的目标地址(相对地址)  
      LP1:  
      MOV DX, DS:[SI] ;将地址(段基地址+偏移地址)中存放的内容copy入DX数据寄存器中  
      MOV ES:[DI], DX ;将DX内容copy入地址为ES+DI的存储单元中  
      INC SI  
      INC DI  
      LOOP LP1 ;循环直至CX中数值为0 

      程序执行逻辑如下所示:

      注意:附加段是数据段的扩展段,我们也可以称附加段为“额外的数据段”,这说明附加段和数据段都是存储数据用的,此外,这种批量的数据操作也被称之为“串操作”。

      前面提及过在操作数据段时,BX基址寄存器、SI源变址寄存器、DI目标变址寄存器三者再结合数据段基址寄存器DS后也可以实现同上述类似的对数据段数据转移操作:

      假设 DS=250AH,BX=2EF0H,执行以下程序段,可将源数据区的100个字(Word)数据复制到目的数据区:

      MOV CX, 100 ;在计数寄存器CX中设置循环次数  
      MOV SI,1 ;操作对象的源地址(相对地址)  
      MOV DI,1 ;操作对象的目标地址(相对地址)  
      LP1:  
      MOV DX, DS:[SI] ;将“段基地址+偏移地址”copy入DX数据寄存器中  
      MOV BX:[DI], DX ;将DX内容copy入地址为BX+DI的存储单元中  
      INC SI  
      INC DI  
      LOOP LP1 ;循环直至CX中数值为0 

      其实此处BX充当了ES的作用,BX存放了数据转移的目标地址,我们使用循环不断地将数据copy至目标地址。

    • 您还可以看一下 李月喜老师的企业微信开发自建内部应用开发篇课程中的 开发文档如何阅读,如何寻求帮助,如何找到同行小节, 巩固相关知识点
    评论
查看更多回答(2条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥30 宾馆客房管理系统可视化
  • ¥20 unity打光没有照亮物体
  • ¥25 powershell如何拷贝1周前的文件
  • ¥15 询问MYSQL查询SQLSERVER数据表并比较差异后,更新MYSQL的数据表
  • ¥15 关于#前端#的问题,请各位专家解答!
  • ¥15 最小生成树问题 Prim算法和Kruskal算法
  • ¥25 医院住院病人呼叫器设计
  • ¥15 不想和现在的团队合作了,怎么避免他们对程序动手脚
  • ¥20 C语言字符串不区分大小写字典排序相关问题
  • ¥15 关于#python#的问题:我希望通过逆向技术爬取1688搜索页下滑加载的数据