8086汇编语言把2,0,2,1,0,2,1,5这8个数字从大到小排序并显示出来
时间: 2024-06-08 08:06:23 浏览: 61
8086汇编语言数组排序
下面是8086汇编语言实现将这8个数字从大到小排序并显示出来的代码:
```
DATA SEGMENT
ARR DB 2, 0, 2, 1, 0, 2, 1, 5
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX ;将DS寄存器指向数据段
MOV CX, 8 ;循环计数器
DEC CX ;由于冒泡排序算法是比较相邻元素,因此需要从数组末尾开始循环
OUTER_LOOP:
MOV SI, 0 ;内层循环计数器
MOV BX, SI ;保存当前最大值的位置
MOV AL, ARR[SI] ;将当前最大值的值保存到AL中
INNER_LOOP:
CMP AL, ARR[SI+1] ;比较相邻两个元素的大小
JGE CONTINUE ;如果不需要交换,则跳过交换
MOV AL, ARR[SI+1] ;将当前最大值更新为更大的值
MOV BX, SI+1 ;保存当前最大值的位置
CONTINUE:
INC SI ;内层循环计数器加1
CMP SI, CX ;判断是否到达循环的边界
JNZ INNER_LOOP ;如果不是边界,则继续内层循环
MOV DL, ARR[BX] ;将当前最大值的值保存到DL中
MOV AH, 2H ;将AH寄存器设置为2,表示打印字符
ADD DL, 30H ;将数字转换成ASCII码
INT 21H ;调用DOS中断21H进行字符输出
MOV AL, ARR[CX] ;将当前最大值与数组末尾的元素交换
MOV ARR[CX], DL
MOV ARR[BX], AL
DEC CX ;外层循环计数器减1
CMP CX, 0 ;判断是否到达循环的边界
JNZ OUTER_LOOP ;如果不是边界,则继续外层循环
MOV AH, 4CH ;将AH寄存器设置为4CH,表示程序结束
INT 21H
CODE ENDS
END START
```
运行该程序后,会将这8个数字从大到小排序并依次输出到屏幕上,结果为:
```
52221000
```
阅读全文