请用冒泡排序法编程将内存ARRAY单元开始存储的一组8位带符号数据按从大到小排列 :

冒泡法:N个数要进行N-1趟。第一趟从第一个开始一次对相邻两个数进行比较,若数的大小次序错误,则交换,否则不作任何操作。进行N-1次比较结束时,最小数排在最后。然后,进行第二趟,只需要进行N-2次比较,就可排好次小数。第三趟,进行N-3次比较,………依次类推。

代码:

DATA   SEGMENT               
    NUM     DB  5,9,8,7,3,15
    LEN     EQU $-NUM
DATA    ENDS
CODE    SEGMENT                 
    ASSUME  CS:CODE,DS:DATA
START:
    MOV  AX,DATA
    MOV  DS,AX 
    MOV  CX,LEN 
    DEC  CX     ;CX←比较趟数,即外循环次数
LOP1:   MOV  DX,CX  ; 保存外循环次数在DX,内循环比较次数在CX中。
    MOV  SI,0        
LOP2:
        MOV  AL,NUM[SI]
    CMP  AL,ANUM[SI+1]  ;相邻两数据比较
    JAE  CONT
    XCHG AL,NUM[SI+1]
        MOV  NUM[SI],AL
CONT :
    INC SI         ;修改数据地址指针
    LOOP  LOP2     ; 内循环结束   
    MOV CX,DX      ;恢复外循环计数值
    LOOP LOP1      ;外循环是否结束
    MOV  AH,4CH
    INT  21H
CODE    ENDS
    END     START
0
Posted in 汇编语言

Leave a Comment:

电子邮件地址不会被公开。