以DATA为首地址的内存数据段中,存放200个16位有符号数,试找出其中最大和最小的有符号数,将它们分别存放在MAX和MIN为首的内存单元中。
2条回答 默认 最新
- foolish coder 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为首的内存单元中
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用