猫礼 发表于 2012-3-16 11:35:20

汇编冒泡法排序,到底是怎么比较的

本帖最后由 猫礼 于 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指令)

哈姆戈多 发表于 2012-3-16 11:35:21

好像 那个CJNE影响的是标志位 CY在 CJNEA,22H ,QL3的 下面 有一句 STEB C   不是说 CY=1嘛当CY =1的时候操作数1小于操作数2    仅供参考   本人 比菜鸟还菜

猫礼 发表于 2012-3-17 00:44:36

真伤心,竟然没个人回答?是觉得问题太easy,还是?

认真 发表于 2012-3-17 07:57:52

表示不会,不是不回答

猫礼 发表于 2012-3-17 22:39:04

哈姆戈多 发表于 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:37

猫礼 发表于 2012-3-17 22:39 static/image/common/back.gif
多谢提醒,CJNE有比较和判断双重功能,若A

否则Cy=0,刚刚打错了,嘻嘻
页: [1]
查看完整版本: 汇编冒泡法排序,到底是怎么比较的