使用8086汇编语言实现已知在 DATA 开始的字单元中存放有 10 个无符号整数,试编制程序挑选出其 中的最大值和最小值并显示。
时间: 2024-05-02 15:20:57 浏览: 93
利用汇编语言编写找出10个无符号数中最大数和最小数分别存储程序.doc
以下是实现该功能的8086汇编程序:
```
.MODEL small
.STACK 100h
.DATA
numbers DB 10, 20, 15, 8, 30, 25, 18, 12, 5, 22 ; 存放10个无符号整数
max DB ? ; 存放最大值
min DB ? ; 存放最小值
.CODE
MOV AX, @DATA
MOV DS, AX
; 找出最大值
MOV AL, numbers
MOV BL, AL ; BL 存放当前最大值
MOV CX, 9 ; 循环计数器
MOV SI, 1 ; 数组索引
LOOP1:
MOV AL, numbers[SI]
CMP AL, BL
JBE SKIP1
MOV BL, AL
SKIP1:
INC SI
LOOP LOOP1
MOV max, BL
; 找出最小值
MOV AL, numbers
MOV BL, AL ; BL 存放当前最小值
MOV CX, 9 ; 循环计数器
MOV SI, 1 ; 数组索引
LOOP2:
MOV AL, numbers[SI]
CMP AL, BL
JAE SKIP2
MOV BL, AL
SKIP2:
INC SI
LOOP LOOP2
MOV min, BL
; 显示结果
MOV AH, 09h ; 选择文本输出功能
MOV DX, OFFSET max
INT 21h ; 显示最大值
MOV DL, ','
INT 21h ; 显示逗号
MOV DX, OFFSET min
INT 21h ; 显示最小值
MOV AH, 4Ch ; 返回操作系统
INT 21h
END
```
程序首先将数据段的地址加载到 DS 寄存器中。然后,程序使用两个循环来遍历数组并找出最大和最小值。在循环中,程序使用 CMP 指令来比较当前数组元素与当前最大或最小值,并使用 JBE 或 JAE 指令来跳过更新,如果不需要更新当前最大或最小值。最后,程序使用 DOS 中断 21h 的功能来显示最大和最小值,并使用 INT 21h 调用 4Ch 来返回操作系统。
阅读全文