8086中设计一个程序,在已知的DATA开始的字单元中存放有10个无符号整数,试编程挑选出其中最大值和最小值并显示
时间: 2024-05-15 22:19:32 浏览: 103
利用汇编语言编写找出10个无符号数中最大数和最小数分别存储程序.doc
以下是8086汇编语言程序,用于在已知的数据段中找出最大值和最小值并显示:
```
ORG 100h ; 程序入口地址
MOV AX, @DATA ; 初始化数据段寄存器
MOV DS, AX
MOV CX, 10 ; 数据个数
MOV SI, OFFSET DATA ; 数据段偏移地址
MOV AL, [SI] ; 初始化最大值为第一个数
MOV BL, [SI] ; 初始化最小值为第一个数
LOOP_START:
INC SI ; 下一个数据单元地址
CMP [SI], AL ; 判断是否大于当前最大值
JLE NOT_MAX
MOV AL, [SI] ; 更新最大值
NOT_MAX:
CMP [SI], BL ; 判断是否小于当前最小值
JGE NOT_MIN
MOV BL, [SI] ; 更新最小值
NOT_MIN:
LOOP LOOP_START
MOV AH, 09h ; 显示最大值
MOV DX, OFFSET MSG_MAX
INT 21h
MOV AH, 02h ; 换行
MOV DL, 0Dh
INT 21h
MOV DL, 0Ah
INT 21h
MOV AH, 09h ; 显示最小值
MOV DX, OFFSET MSG_MIN
INT 21h
MOV AH, 4Ch ; 程序退出
INT 21h
DATA SEGMENT
DATA DB 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
MSG_MAX DB 'Maximum value: $'
MSG_MIN DB 'Minimum value: $'
DATA ENDS
```
程序首先初始化数据段寄存器,然后将计数器 CX 设置为数据个数,将指针 SI 设置为数据段偏移地址,将 AL 和 BL 初始化为第一个数据值,然后开始循环遍历每个数据单元。在每个单元中,程序将数据与当前最大值和最小值进行比较,并在必要时更新最大值和最小值。最后,程序使用 DOS 中断显示最大值和最小值,并退出程序。
请注意,此程序仅适用于无符号整数。如果数据包含有符号整数或其他类型的数据,则需要进行适当的修改。
阅读全文