单片机大小排序?(单片机的大小)
TEMP2 EQU 31H ;
RAM_STA EQU 50H ;定义排序区域的首地址!
RAM_END EQU 70H ;定义排序区的结束地址!
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
ACALL MIN_SORT; 调用由小到大排序的程序
SJMP $
MIN_SORT: ;排序函数
MOV R0,#RAM_STA; 用了两个指针,R0和R1,作用是在排序区中获得两个数比较和存放操作
MOV R1,#RAM_STA+1;先把首地址装好
LOOP: MOV A,@R0; 取出两个排序区单元内容放到暂存单元中
MOV TEMP1,A
MOV A,@R1
MOV TEMP2,A
ACALL MIN ; 调用MIN函数,对两个单元进行排序
INC R1; R1指向下一单元
CJNE R1,#RAM_END+1,LOOP; 一直比较到规定结束地址
INC R0; R0指向下一单元
MOV A,R0
INC A;
MOV R1,A R1指向R0的下一单元
CJNE R0,#RAM_END,LOOP; 全部判断结束?
RET 返回
MIN: ; 比较@R0与@R1二者大小,小的放@R0,大的放@R1
PUSH PSW ;保护程序状态
CLR C ;清进位标志,方便下面的操作
MOV A,TEMP1
SUBB A,TEMP2 ;两数相减
JC MIN_END ;有进位表示前者小于后者,否则要交换
MOV A,TEMP2 ;两数交换
MOV @R0,A
MOV A,TEMP1
MOV @R1,A
MIN_END:POP PSW ;恢复程序状态
RET ;返回
END
大概的排序方式为:先找出最小的放到最低RAM中(50H),这里是用最低RAM(50H)与其他RAM逐一比较,比它小的话就两者交换(这样50H中就始终是最小的),得到最小的,再找第二小的...一直判断下去,最后就实现了你要的效果了!
大小端排序是指超过8位的数据类型在内存中存放地址的次序,以存放0x1234为例,内存位置0x0001和0x0002为例解释。
小端
小端是指 高位存放在高地址中,地位存放在低地址中,那么0x1234存放在内存中时,高位0x12存放在搞0x0002高地址中,低位0x34存放在低地址0x0001中
大端
与小端相反,大端高位存放在低地址中,低位存放在高地址中。那么0x1234中的0x12存放在低地址0x0001中,0x34存放在0x0002当中
单片机
51单片机是大端模式(cc2530却是小端模式)
stm32为小端模式
适用方面
大端适用于网络传输
小端适用于底层硬件