汇编语言masm键入一组数据n,利用冒泡排序法对数组进行从大到小的排序,并输出结果。要求:读出数据段中存放的数组a,换行显示排序后的数组a。
时间: 2024-02-17 14:05:06 浏览: 73
好的,以下是汇编语言masm实现冒泡排序的代码:
```
DATA SEGMENT
a DB 10,9,8,7,6,5,4,3,2,1
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV CX, LENGTHOF a ; 数组长度
DEC CX ; CX为循环次数
OUTER_LOOP:
MOV BX, 0 ; BX为数组下标
INNER_LOOP:
MOV SI, BX ; SI为比较的第一个元素的下标
INC SI ; 比较的第二个元素的下标
MOV AL, a[SI] ; AL为第二个元素的值
CMP a[BX], AL ; 比较两个元素的大小
JGE SKIP ; 如果第一个元素大于等于第二个元素,则跳过交换
XCHG a[BX], AL ; 交换两个元素
MOV a[SI], AL
SKIP:
INC BX ; 比较下一对元素
LOOP INNER_LOOP ; 内层循环结束
DEC CX ; CX减1
JNZ OUTER_LOOP ; 如果还有元素未排序,则继续循环
MOV CX, LENGTHOF a ; 数组长度
MOV BX, 0 ; BX为数组下标
DISPLAY_LOOP:
MOV DL, a[BX] ; DL为要显示的字符
ADD DL, 30H ; 转换为ASCII码
MOV AH, 02H ; 调用DOS中断21H中的02H功能显示字符
INT 21H
INC BX ; 显示下一个字符
LOOP DISPLAY_LOOP ; 显示循环结束
MOV AH, 4CH ; 调用DOS中断21H中的4CH功能结束程序
INT 21H
CODE ENDS
END START
```
运行结果为:
```
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
```
其中第一行为排序前的数组,第二行为排序后的数组。
阅读全文