51汇编实现比较三个数的大小并排序

如题所述

51单片机实现比较三个数的大小,并将数由小到大分别存入40H、41H、42H单元中
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN: MOV 30H,#98H
MOV 31H,#88H
MOV 32H,#78H
MOV A,30H
CJNE A,31H,COMP1
COMP1: JC B1
CJNE A,32H,COMP2
COMP2: JC A1
MOV 42H,30H
MOV A,31H
CJNE A,32H,A2
A2: JC A3
MOV 41H,31H
MOV 40H,32H
SJMP $
A3: MOV 41H,32H
MOV 40H,31H
SJMP $
A1: MOV 42H,32H
MOV 41H,30H
MOV 40H,31H
SJMP $
B1: MOV A,31H
CJNE A,32H,COMP3
COMP3: JC B3
MOV 42H,31H
MOV A,30H
CJNE A,32H,COMP4
COMP4: JC B3
MOV 41H,30H
MOV 40H,32H
SJMP $
B3: MOV 42H,32H
MOV 41H,31H
MOV 40H,30H
SJMP $ ;
B2: MOV 42H,32H ;
MOV 41H,31H ;
MOV 40H,30H ;
SJMP $
END
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-15
假设有三个数存在40H、41H、42H单元中。

先在三个数字中,找一个最大的,放在40H。
再在余下的两个数字中,找一个最大的,放在41H。本回答被网友采纳
第2个回答  2019-10-18
;冒泡排序
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN: MOV 30H,#65H
MOV 31H,#61H
MOV 32H,#66H
MOV R0,#30H
MOV R3,#2
MOV R4,#2
LOOP: MOV A,@R0
INC R0
MOV B,@R0
CJNE A,B,K1

K1:
JC L1
DJNZ R3,LOOP
DJNZ R4,L2
SJMP L3
L1:
XCH A,@R0
DEC R0
MOV @R0,A
INC R0
DJNZ R3,LOOP
DJNZ R4,L2
SJMP L3

L2:
MOV R0,#30H
MOV R3,#1
LJMP LOOP
L3: NOP
END
;悬剑
;yinweiyounidecunzai

51汇编实现比较三个数的大小并排序
51单片机实现比较三个数的大小,并将数由小到大分别存入40H、41H、42H单元中ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV 30H,#98H MOV 31H,#88H MOV 32H,#78H MOV A,30H CJNE A,31H,COMP1COMP1: JC B1 CJNE A,32H,COMP2COMP2: JC A1 MOV 42H,30H MOV A,31H CJNE A,32H,A2A2: JC A3 M...

51单片机 用汇编语言怎么编程:几个有符号数的比较大小
51单片机中,没有专门的有符号数比较指令,只能通过一些变通的方法来实现,比如:比较30H和40H中有符号数的大小,结果放在R2中,大于则为1,等于为0,小于为128:CMPDAT:MOV A,30H JB ACC.7,CMPF1 MOV B,A MOV A,40H JB ACC.7,CMPZ2 ;30H正,40H负所以30H>40H CJNE A,B,CMPZ1 ;...

51单片机如何用汇编语言从十个数里选出最大值最小值
1、首先可以利用51单片机子程序输出找到的最大最小值。2、其次按照数据存储或者输入的顺序,把每2个数进行比较。3、最后每次比较都选择较大的数和下一个数据进行比较,这样最后一次比较中较大数就是10个数据里面的最大值。

51单片机 用汇编语言怎么编程:几个有符号数的比较大小
设内部RAM中的30H和31H单元中有两个带符号数,求其中的大数,放在32H单元中。;MOV 32H,30H ;先取一个放好.MOV A,30H CLR C SUBB A,31H ;(30H)-(31H)JNB ACC.7,ZZZ ;差为正数则转移.JB OV,_END ;负、且溢出转至结尾.SJMP XXX ;否则去存31H ZZZ:JNB OV,_END ;差为正、且无...

51单片机汇编 排序问题 请各位赐教
;题目要求有三个地址,需要使用三个地址指针,比较麻烦。程序如下:MOV 50H, #51H ;两个个数计数器 MOV 70H, #71H ;兼当地址指针,目标地址,MOV R0, #20H ;源地址 MOV R2, #30 ;数据个数 LOOP:MOV A, @R0 INC R0 JB ACC.7, FU ...

汇编指令 cjne 是什么意思啊
汇编指令cjne是MCS-51系列单片机中的一种条件转移指令,它在执行时用于比较两个指定的操作数。这个指令的实质是根据两个操作数的比较结果来决定程序的流程。具体来说,如果两个操作数相等,指令就会按照预期的顺序继续执行;反之,如果它们不相等,程序就会进行转移,跳到指定的地址进行后续操作。在执行cjne...

51汇编语言三个数据指针是什么
51汇编语言三个数据指针是DPTR、R0和R1。1、DPTR:数据指针寄存器,是一个16位的寄存器,用于指向数据存储区中的某个地址,一般用于程序与外设之间的数据传输。2、R0:寄存器0,是一个8位的寄存器,可以用于存储数据或地址。3、R1:寄存器1,也是一个8位的寄存器,用途和R0类似,可以用于存储数据或地址...

51单片机汇编语言-请编写程序将内部RAM 40H到4FH 中的16个数据按从小...
SORT: ; 数据冒泡排序程序 MOV R6, #16 ;参加排序数据的总个数 DEC R6 ; 比较次数 比 数据总数 少 1 L1:MOV R0, #40H ; 把数据的起始地址40h付给R0 MOV A, R6 ;调整比较次数 MOV R7, A CLR F0 ; 清交换标志 L2: ...

求助这段51汇编代码意思
SETB P2.7 P2.7 置高电平 SETB P2.2 同上 SETB P2.1 同上 ,LCALL DEL 调用 DEL MOV A P1 把P1端口 映射到A寄存器 MOV 36H,A 这句是错的吧 XRL A,#0FFH A寄存器里的数据和 #0FFH 异或 AJMP LOOP 绝对跳转 到 LOOP即上面的起点 CJNE A,#00H,JANB1 寄存...

汇编,将一个输入的无符号数与立即数比较
你把宏汇编和51会变搞混了,51汇编不支持CMP指令,你得好好看看书。这样改:MOV A,P0 CLR C SUBB A,#66H; 与66H比较 JC Y; 小则跳至Y SUBB A,#34H; 与99H比较 JNC X; 大则跳至X

相似回答