已知在 DATA 开始的字单元中存放有 10 个无符号整数,试编制程序挑选出其 中的最大值和最小值并显示。利用EMU8086编写
时间: 2024-04-29 19:23:51 浏览: 10
以下是使用EMU8086汇编语言编写的程序:
```
; 初始化数据段指针
mov ax, @data
mov ds, ax
; 初始化变量
mov cx, 10 ; 数组大小
mov si, offset data ; 数组地址
mov al, [si] ; 将第一个元素加载到 al 中
mov bl, [si] ; 将第一个元素加载到 bl 中
; 循环查找最大值和最小值
loop_start:
cmp [si], al ; 比较当前元素和最大值
jg update_max ; 如果当前元素大于最大值则更新最大值
cmp [si], bl ; 比较当前元素和最小值
jl update_min ; 如果当前元素小于最小值则更新最小值
inc si ; 移动到下一个元素
loop loop_start
; 显示最大值和最小值
update_max:
mov al, [si]
jmp loop_start
update_min:
mov bl, [si]
jmp loop_start
display_result:
mov ah, 09h ; 显示字符串的中断号
mov dx, offset result ; 存储结果的字符串地址
int 21h
mov ah, 4ch ; 退出程序的中断号
int 21h
; 数据段
data db 1, 5, 2, 9, 4, 8, 3, 7, 6, 0
result db "最大值为: $"
db 10, 13, "最小值为: $", 10, 13, "$"
; 结束程序
mov ah, 4ch
int 21h
```
程序首先将数据段指针设置为 `DS` 寄存器,然后初始化变量,包括数组大小、数组地址以及最大值和最小值的初始值。接下来进入循环,逐个比较数组中的元素和最大值和最小值,更新它们的值。循环结束后,程序将最大值和最小值显示在屏幕上。最后,程序通过调用 `int 21h` 中断退出。