;File : SORT.ASM
;Date : 2018/5/7
;Finished by rr
;Function : implement bubble sort
DATA SEGMENT
;定义数组A,两个字节保存一个值,
;对应十进制的3,13,504,29,32,253
A DW 03H,0DH,1F8H,1DH,20H,0FDH
DATA ENDS
CODE SEGMENT
MAIN PROC FAR ; 远指针
ASSUME CS:CODE, DS:DATA
START:
PUSH DS
MOV AX, 0 ;AX寄存器清零
PUSH AX
MOV AX, DATA
MOV DS, AX
MOV CX, 7
DEC CX ;减1指令
LOOP1: ;CX = CX - 1, 若CX != 0 则继续循环
MOV DI, CX ;把CX寄存器的值传送到以DS寄存器(默认是DS寄存器)的内容为段值有效地址为DI的存储单元中
MOV BX, 0
LOOP2:
MOV AX, A[BX] ;把第BX个数传给AX寄存器
CMP AX, A[BX+2] ;比较第BX个数和第BX+2个数
JLE CONTINUE ;JLE:小于等于则跳转,否则执行下句
XCHG AX, A[BX+2] ;否则两比较数交换位置
MOV A[BX],AX
CONTINUE:
ADD BX, 2
LOOP LOOP2
MOV CX, DI
LOOP LOOP1
MOV CX, 7
MOV BX, 0
NEXT:
MOV AX, [BX]
PUSH CX
CALL SHOW
POP CX
MOV AH, 2
MOV DL, ' '
INT 21H
ADD BX, 2
LOOP NEXT
RET
MAIN ENDP
SHOW: ;函数,显示AX里的值
MOV CX, 10
CMP AX, 0
JLE DONE
DIV CL ;除法:被除数在DX,AX中,除数在cl中
PUSH AX
XOR AH, AH ;XOR实现两个操作数按位‘异或’运算,结果送至目的操作数中
CALL SHOW ;调用函数
POP DX
MOV DL, DH
OR DL, 30H
MOV AH, 2
INT 21H
DONE:
RET
CODE ENDS
END START
汇编语言实现冒泡排序 (Win32汇编)
最新推荐文章于 2021-05-21 07:36:58 发布