汇编冒泡法排序,到底是怎么比较的
本帖最后由 猫礼 于 2012-3-16 11:38 编辑ORG 0000H
MOV R4, #11
MOV A, #0AH
MOV R0, #50H
L001: MOV @R0, A
DEC A
INC R0
DJNZ R4, L001
LJMP QUE
ORG 09B0H
QUE: MOV R3, #50H
QUE1: MOV A, R3 ;指针送R0
MOV R0, A
MOV R7, #0AH ;长度送R7
CLR 00H ;清标志位
MOV A, @R0
QL2: INC R0
MOV R2, A
CLR C
MOV 22H, @R0
CJNE A, 22H, QL3 ;相等吗?
SETB C
QL3: MOV A, R2
JC QL1 ;大于交换位置
SETB 00H
XCH A, @R0
DEC R0
XCH A, @R0
INC R0 ;大于交换位置
QL1: MOV A, @R0
DJNZ R7, QL2
JB 00H, QUE1 ;一次循环中有交换继续
LOOP: SJMP LOOP ;无交换退出
END我不明白的地方就是,我只看到了交换,我不知道,他是怎么比较大小的。他怎么知道哪个大,哪个小?CJNE A, 22H, QL3 也只是判断是否相等,不相等就转。纠结,到底是怎么比较的呢?
(这是这是单片机AT89C51指令)
好像 那个CJNE影响的是标志位 CY在 CJNEA,22H ,QL3的 下面 有一句 STEB C 不是说 CY=1嘛当CY =1的时候操作数1小于操作数2 仅供参考 本人 比菜鸟还菜 真伤心,竟然没个人回答?是觉得问题太easy,还是? 表示不会,不是不回答 哈姆戈多 发表于 2012-3-17 20:17 static/image/common/back.gif
好像 那个CJNE影响的是标志位 CY在 CJNEA,22H ,QL3的 下面 有一句 STEB C 不是说 CY=1嘛当CY = ...
多谢提醒,CJNE有比较和判断双重功能,若A<direct,则Cy=1,否则Cy=1,了解了 猫礼 发表于 2012-3-17 22:39 static/image/common/back.gif
多谢提醒,CJNE有比较和判断双重功能,若A
否则Cy=0,刚刚打错了,嘻嘻
页:
[1]