欢迎您光临机械网,如有问题请及时联系我们。

单片机大小排序?(单片机的大小)

作者:机械网
文章来源:本站

  

单片机大小排序?(单片机的大小)

  

单片机大小排序?(单片机的大小)

  

单片机大小排序?(单片机的大小)

  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为小端模式

  适用方面

  大端适用于网络传输

  小端适用于底层硬件

来源:文章来源于网络,如有侵权请联系我们及时删除。本文由机械网转载编辑,欢迎分享本文!