8086中设计一个程序,在已知的DATA开始的字单元中存放有10个无符号整数,试编程挑选出其中最大值和最小值
时间: 2024-05-15 21:19:30 浏览: 100
利用汇编语言编写找出10个无符号数中最大数和最小数分别存储程序.doc
下面是一个8086汇编程序,可以在已知的DATA开始的字单元中挑选出最大值和最小值。
```assembly
ORG 100h ; 程序从100h地址处开始
MOV AX, @DATA ; 初始化数据段寄存器
MOV DS, AX
MOV CX, 10 ; 要比较的数字的数量
MOV SI, OFFSET DATA ; 数据存储在DATA开始的字单元中
MOV AL, BYTE PTR [SI] ; 将第一个数字存储到AL中,作为最大值和最小值的初始值
MOV BL, AL ; 将AL中的值复制到BL中,作为最小值的初始值
; 比较剩余的数字
LOOP_START:
INC SI ; 指向下一个数字
CMP BYTE PTR [SI], AL ; 比较当前数字和当前最大值
JLE CHECK_MIN ; 如果当前数字小于等于当前最大值,跳转到CHECK_MIN
MOV AL, BYTE PTR [SI] ; 否则,将当前数字存储到AL中,更新最大值
JMP CHECK_MIN_DONE ; 跳转到CHECK_MIN_DONE
CHECK_MIN:
CMP BYTE PTR [SI], BL ; 比较当前数字和当前最小值
JGE CHECK_MIN_DONE ; 如果当前数字大于等于当前最小值,跳转到CHECK_MIN_DONE
MOV BL, BYTE PTR [SI] ; 否则,将当前数字存储到BL中,更新最小值
CHECK_MIN_DONE:
LOOP LOOP_START ; 继续比较剩余的数字
; 最大值存储在AL中,最小值存储在BL中
HLT ; 结束程序
; 数据段
DATA DB 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
```
注:这个程序只能用于比较无符号整数。如果需要比较有符号整数,需要进行符号扩展和判断。
阅读全文