汇编用循环嵌套实现冒泡排序

data segment 
	a dw  2, 5, 6, 8
	l equ $-a
data ends

code segment 
		assume cs:code ,  ds:data
	start:
			mov cx, l  
			shr cx, 1  ; 逻辑循环右移指令,移动1位,相当于除以二
			dec cx      ;循环n-1次
	loop1:
			push cx
			xor bx, bx  ;两个数进行异或运算,结果存放在目的操作数中;这相当于把bx制零
	loop2:  
			mov ax, a[bx]
			cmp ax, a[bx+2]
			jng continue  ;不大于则跳转,否则交换;通过cf和zf判断
			xchg ax, a[bx+2]  ;xchg 指令两个操作数不能同时为内存变量
			xchg ax, a[bx]    ;也不能用段寄存器
	continue:
			inc bx   ;一次操作一个字,所以自增两次
			inc bx
			loop loop2
			pop cx
			loop loop1
			mov ax, 4c00h
			int 21h
code ends
	end start

你可能感兴趣的:(汇编用循环嵌套实现冒泡排序)