在微机(8086/8088)指令执行是会不会把[SI-2]→[SI];这就是我不理解下面那个程序的原因?

来源:百度知道 编辑:UC知道 时间:2024/06/24 17:36:21
例:在DS所决定的数据段,从偏移地址BUFFER开始顺序存放100个无符号16位数。现欲编写程序将这100个字按大小顺序排序。
程序如下.
.
.
.

LEA DI,BUFFER
MOV BL,99
NEXT0:MOV SI,DI
MOV CL,BL
NEXT3:MOV AX,〔SI〕
ADD SI,2
CMP AX,〔SI〕
JNC NEXT5

MOV DX,〔SI〕 就是
MOV〔SI-2〕,DX 这三条
MOV〔SI〕, AX 不理解啊!

NEXT5:DEC CL
JNZ NEXT3
DEC BL
JNZ NEXT0
HLT

JNC NEXT5 如果AX不小于〔SI〕则跳转NEXT5
那么下面这三条就是在AX小于〔SI〕的条件下执行
MOV DX,〔SI〕
MOV〔SI-2〕,DX
MOV〔SI〕, AX
这三条就是把 刚比较的两个数互换 因为后者大