关键点:
1.loop指令的原理、断点位置
2.条件转移指令JNLE(小于或等于)和JG(大于)、与CMP(比较)一起使用
DATA SEGMENT
A dw 1,3,4,2,5
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
;MOV BX,OFFSET A;待排序内容的偏移地址
MOV CX,5;5个数,循环5次
;DEC CX;自减1,第一轮要比较4次?不太确定
loop1: MOV DI,CX;DI存放CX,起到保护作用
MOV BX,0;BX存放偏移地址
loop2: MOV AX,A[BX];有[],是存储器寻址方式里的相对寄存器寻址,间址寄存器为BX,用DS内容作为段基址
CMP AX,A[BX+2];比较大小,+2是由于每个数据是字定义,1字=2字节(8086)
JNLE CONTINUE;AX更大,不用替换,转移
XCHG AX,[BX+2];AX更小,交换,AX始终存放大的那个数,第n轮结束后,第5-n+1个数是余下5-n+1个数里最小的
MOV A[BX],AX;用AX作为交换媒介
CONTINUE:
ADD BX,2
LOOP loop2
MOV CX,DI;恢复CX,循环时CX会自减
LOOP loop1
MOV AH,4CH
INT 21H
CODE ENDS
END START
标签:8086,CODE,DATA,MOV,冒泡排序,CX,AX,BX,loop From: https://www.cnblogs.com/cqu-Ryoma/p/17245572.html