已知在 DATA 开始的字单元中存放有 10 个无符号整数,试编制程序挑选出其 中的最大值和最小值并显示。利用EMU8086编写
时间: 2024-04-30 22:22:55 浏览: 106
以下是使用EMU8086汇编语言编写的程序:
```
;定义数据段
data segment
nums db 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 ;存放10个无符号整数
max db 0 ;最大值
min db 255 ;最小值
data ends
;定义代码段
code segment
assume cs:code, ds:data
start:
mov ax, data ;将数据段地址存入AX寄存器
mov ds, ax ;将数据段地址存入DS寄存器
mov cx, 10 ;循环计数器,设置为10
mov si, 0 ;数组下标,初始值为0
find_max:
cmp si, 10 ;判断是否已经遍历完所有元素
je find_min ;如果已经遍历完所有元素,跳转到寻找最小值的过程
mov al, nums[si] ;将当前元素存入AL寄存器
cmp al, max ;将AL寄存器中的值与最大值比较
jle find_min ;如果AL寄存器中的值小于或等于最大值,跳转到寻找最小值的过程
mov max, al ;将AL寄存器中的值存入最大值变量中
inc si ;数组下标加1
loop find_max ;循环
find_min:
cmp si, 10 ;判断是否已经遍历完所有元素
je display ;如果已经遍历完所有元素,跳转到显示结果的过程
mov al, nums[si] ;将当前元素存入AL寄存器
cmp al, min ;将AL寄存器中的值与最小值比较
jge next ;如果AL寄存器中的值大于或等于最小值,跳转到下一元素
mov min, al ;将AL寄存器中的值存入最小值变量中
next:
inc si ;数组下标加1
loop find_min ;循环
display:
mov ah, 09h ;设置显示字符串的功能码
mov dx, offset max ;将最大值变量的地址存入DX寄存器
int 21h ;显示最大值
mov ah, 09h ;设置显示字符串的功能码
mov dx, offset min ;将最小值变量的地址存入DX寄存器
int 21h ;显示最小值
mov ah, 4ch ;设置程序结束的功能码
int 21h ;结束程序
code ends
end start
```
程序运行的结果将会输出最大值和最小值。在这个例子中,最大值是100,最小值是10。
阅读全文