m0_71262295 2023-04-18 13:04 采纳率: 100%
浏览 28
已结题

关于汇编语言的问题,请各位专家解答!汇编语言

以DATA为首地址的内存数据段中,存放200个16位有符号数,试找出其中最大和最小的有符号数,将它们分别存放在MAX和MIN为首的内存单元中。

  • 写回答

2条回答 默认 最新

  • 喝茶品人生 2023-04-18 13:52
    关注
    
    ; 初始化寄存器
    MOV AX, DATA ; 以DATA为首地址的内存数据段
    MOV DS, AX ; 将DS寄存器设置为DATA的值
    MOV BX, 0 ; 初始化计数器
    MOV CX, -32768 ; 初始化最小值为最小的有符号数
    MOV DX, 32767 ; 初始化最大值为最大的有符号数
    
    ; 循环比较每个16位有符号数
    LOOP_START:
    CMP BX, 200 ; 检查计数器是否达到200
    JE LOOP_END ; 如果达到200,退出循环
    MOV AX, [BX] ; 从内存中加载一个16位有符号数到AX寄存器
    CMP AX, DX ; 比较AX寄存器的值是否大于最大值
    JLE CHECK_MIN ; 如果小于等于最大值,跳到CHECK_MIN
    MOV DX, AX ; 如果大于最大值,将DX寄存器的值设置为AX的值
    JMP CHECK_MIN ; 跳转到CHECK_MIN
    CHECK_MIN:
    CMP AX, CX ; 比较AX寄存器的值是否小于最小值
    JGE INCREMENT_COUNTER ; 如果大于等于最小值,跳到INCREMENT_COUNTER
    MOV CX, AX ; 如果小于最小值,将CX寄存器的值设置为AX的值
    INCREMENT_COUNTER:
    ADD BX, 2 ; 增加计数器,跳转到下一个16位有符号数
    JMP LOOP_START ; 跳转到LOOP_START,继续循环
    
    ; 循环结束后,将最大值和最小值存储到指定内存单元中
    LOOP_END:
    MOV AX, MAX ; 将AX寄存器设置为MAX的值
    MOV [AX], DX ; 将最大值存储到MAX为首的内存单元中
    MOV AX, MIN ; 将AX寄存器设置为MIN的值
    MOV [AX], CX ; 将最小值存储到MIN为首的内存单元中
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000