汇编语言实现冒泡排序 (Win32汇编)

;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

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值