使用emu8086编写以下程序,已知在 DATA 开始的字单元中存放有 10 个无符号整数,试编制程序挑选出其 中的最大值和最小值并显示。
时间: 2024-05-15 15:19:53 浏览: 12
```
small
.stack 100h
.data
nums db 5, 9, 3, 7, 2, 8, 1, 6, 4, 0
count db 10
max db 0
min db 255
msg1 db 'Maximum value: $'
msg2 db 10, 13, 'Minimum value: $'
.code
mov ax, @data
mov ds, ax
mov cx, count ; 循环次数为 10
mov si, 0 ; 初始化数组下标
mov bl, nums[si] ; 将第一个值初始化为最大值
; 找出最大值
find_max:
cmp nums[si], bl ; 比较当前值与最大值
jbe next_num ; 如果当前值小于等于最大值,跳过
mov bl, nums[si] ; 如果当前值大于最大值,将当前值设为最大值
jmp next_num
next_num:
inc si ; 数组下标加 1
loop find_max ; 循环
mov max, bl ; 将最大值存入变量
; 找出最小值
mov si, 0 ; 将数组下标重新初始化为 0
mov bl, nums[si] ; 将第一个值初始化为最小值
find_min:
cmp nums[si], bl ; 比较当前值与最小值
jae next_num2 ; 如果当前值大于等于最小值,跳过
mov bl, nums[si] ; 如果当前值小于最小值,将当前值设为最小值
jmp next_num2
next_num2:
inc si ; 数组下标加 1
loop find_min ; 循环
mov min, bl ; 将最小值存入变量
; 显示结果
mov ah, 09h ; 设置显示字符串的功能号
lea dx, msg1 ; 将要显示的字符串的地址传给 DX
int 21h ; 调用 21h 中断显示字符串
mov dl, max ; 将最大值传给 DL
add dl, 48 ; 将数字转换为字符
mov ah, 02h ; 设置显示字符的功能号
int 21h ; 调用 21h 中断显示字符
mov ah, 09h ; 设置显示字符串的功能号
lea dx, msg2 ; 将要显示的字符串的地址传给 DX
int 21h ; 调用 21h 中断显示字符串
mov dl, min ; 将最小值传给 DL
add dl, 48 ; 将数字转换为字符
mov ah, 02h ; 设置显示字符的功能号
int 21h ; 调用 21h 中断显示字符
mov ah, 4ch
int 21h
end
```