汇编语言冒泡排序法

 DAT  EQU  50H    ;排序数据首地址
 N    DATA 10     ;
数据个数
MPPX: MOV  R4,#N       ;
第一轮冒泡操作中的比较次数
SRT1: CLR  F0          ;
在第一轮冒泡操作前,初始化交换标志
       DEC  R4               

MOV  A,R4        ;取上一轮冒泡操作中比较次数
       MOV  R2,A        ;
控制本轮次数
       JZ   SRT4        ;
比较次数为零,排序结束
       MOV  R0,#DAT     ;
取数据区首地址
SRT2: MOV  A,@R0       ;
读取一个数据
       MOV  R3,A        ;
暂存
       INC  R0          ;
指向后一个数据
       MOV  A,@R0       ;
读取
       CLR  C
       SUBB A,R3        ;
和前一个数比较
       JNC  SRT3        ;
不小于前一个数据,符合增序要求
       SETB F0          ;
小于前一个数据,设置交换标志
       MOV  A,R3        ;
交换两个数据(冒泡)
       XCH  A,@R0
       DEC  R0          ;
指向前一个数据
       XCH  A,@R0      
       INC  R0          ;
恢复指针,指向后一个数据
SRT3: DJNZ R2,SRT2     ;
处理完这一轮
       JB   F0,SRT1     ;
本轮若有交换操作,则需进行下一轮操作
SRT4: RET

你可能感兴趣的:(汇编语言冒泡排序法)