在8051芯片上,(汇编语言)用冒泡排序法来排列地址为30H到50H的数值大小

2024-12-24 11:30:15
推荐回答(2个)
回答1:

嘿嘿 俺来帮帮你吧
1 第八句也就是 CJNE @R0,A ,NEXT 出错了
这是一条非法指令 即51单片机指令表中不存在的指令
正确的写法是:
CJNE @R0, #data , NEXT 即采用指针(寄存器间接寻址)的存储器单元内容
只能与立即数比较 不能与累加器A比较

2 你是要进行2个变量数据的比较 建议采用CJNE A, direct, NEXT 指令

呵呵 满意 就给俺加分喽 (早知有人已经答了 何必再答啊 回答时看见没人答啊 ??)

回答2:

CJNE @R0,A ,....,51单片机中,没有这种指令。
----
试试下面的:
MOV R3, #20H
BACK:
MOV A, R3
MOV R2, A
MOV R0, #30H
AGAIN:
MOV A, @R0
INC R0
MOV B, @R0
CJNE A, B, GO ;compare the numbers
GO:
JNC NEXT ;jump if the value of lower address smaller than the higher address
MOV @R0, A
DEC R0
MOV @R0, B ;exchange the values of two adjacent addresses
INC R0
NEXT:
DJNZ R2, AGAIN ;every time finish a out circle , we can put the biggest value into the highest address
DJNZ R3, BACK
END