用汇编语言实现 从键盘输入10个二位无符号数,从小到大排序并显示。
时间: 2024-03-27 15:38:24 浏览: 169
以下是使用汇编语言实现从键盘输入10个二位无符号数,从小到大排序并显示的代码:
```
.MODEL SMALL
.STACK 100H
.DATA
arr DB 10 DUP(?) ; 存储输入的数值
LEN EQU 10 ; 数组长度
.CODE
MAIN PROC
MOV AX, @DATA ; 初始化数据段寄存器
MOV DS, AX
; 从键盘输入10个二位无符号数
MOV CX, LEN
MOV SI, 0
MOV AH, 01H ; 设置输入功能号
INPUT_LOOP:
INT 21H ; 从键盘输入一个字符
SUB AL, 30H ; 将字符转换为数字
MOV [arr+SI], AL ; 存储输入的数字
INC SI
LOOP INPUT_LOOP ; 继续输入下一个数字
; 排序(冒泡排序)
MOV CX, LEN
DEC CX
OUTER_LOOP:
MOV SI, 0
INNER_LOOP:
MOV AL, [arr+SI]
CMP AL, [arr+SI+1] ; 比较相邻两个数的大小
JBE SKIP_SWAP ; 如果前一个数小于等于后一个数,则不交换
XCHG AL, [arr+SI+1]; 交换相邻两个数的位置
MOV [arr+SI], AL
SKIP_SWAP:
INC SI
LOOP INNER_LOOP
LOOP OUTER_LOOP
; 显示排序后的结果
MOV CX, LEN
MOV SI, 0
MOV AH, 02H ; 设置显示功能号
DISPLAY_LOOP:
ADD [arr+SI], 30H ; 将数字转换为字符
MOV DL, [arr+SI]
INT 21H ; 显示一个字符
INC SI
LOOP DISPLAY_LOOP
MOV AH, 4CH ; 退出程序
INT 21H
MAIN ENDP
END MAIN
```
解释:
1. 首先定义了一个长度为10的数组`arr`,用于存储输入的数字。
2. 使用`INT 21H`中断调用实现从键盘输入数字,存储到数组中。
3. 使用冒泡排序算法对数组进行排序。
4. 使用`INT 21H`中断调用实现在屏幕上显示排序后的数字。
注意:以上代码是用8086汇编语言编写的,可能需要根据不同的汇编语言和编译器对代码进行修改。
阅读全文