帮忙 汇编语言 数据的排序 急急急急急急!!1

帮忙 汇编语言 数据的排序 急急急急急急!!1,第1张

;-----------------------------------------------------

SORT: ;排序程序

MOV B, #49 ;第一轮排序时,比较49次

S1: MOV R0, #20H ;数据区的起始地址

CLR PSW5 ;清除"交换"标志位

MOV R7, B

S2: MOV A, @R0 ;取前一个数

INC R0

CLR C

SUBB A, @R0 ;减后一个数,前<后时,Cy=1

S3: JC S4 ;有借位时,不用交换,转移

MOV A, @R0 ;取后一个数,准备交换

DEC R0

XCH A, @R0 ;交换到前一个

INC R0

XCH A, @R0 ;交换到后一个

SETB PSW5 ;设定"交换"标志位

S4: DJNZ R7, S2 ;继续本轮比较

JNB PSW5, ENDS ;如本轮没有进行过交换,可提前结束

DJNZ B, S1 ;下一轮,比较次数少一次

ENDS: RET

;-----------------------------------------------------

一批单字节无符号数,以R0为首地址指针,R2中为字节数,将这批数进行升序排列

SORT:

MOV

A,R0

;

MOV

R1,A

;(R1)为首地址

MOV

A,R2

;字节数送入

R5

MOV

R5,A

;(R5)为字节数

CLR

F0

;互换标志位F0清零

DEC

R5

;循环n-1

MOV

A,@R1

;

LOOP:

MOV

R3

,A

;(R3)为前一个数

INC

R1

;地址指向下一个数

CLR

C

;

MOV

A,@R1

;取下一个数

SUBB

A,R3

;比较大小

JNC

LOOP1

;如果进位位Cy=0,则转移

SETB

F0

;互换标志位F0置1

MOV

A,R3

;前面大的数放到A

XCH

A,@R1

;互换后,小的数在A,大数在@R1

DEC

R1

;(R1)指向前一个地址

XCH

A,@R1

;小的数放到前一个地址

INC

R1

;

(R1)指向下一个地址

LOOP1:

MOV

A,@R1

;取下一个数

DJNZ

R5,LOOP

JB

F0,SORT

如果直接寻址位=1,则转移

RET这是单片机汇编语言的经典冒泡法排序,看懂了,对你很有帮助!把R0=30H

,R2=100H-30H代入,就可以得到你要的结果

ORG 0000H

LJMP 2000H

ORG 2000H

;原址排序

;比较片内RAM30H,31H,32H三个单元数的大小

;并把数据按照从大到小的顺序又存入30H,31H,32H单元中

MAIN:

MOV SP,#80H

MOV R2,#2 ;假设你要进行n个数的排序,则将R2设为N-1就行

MOV A,R2

MOV R3,A

S0:MOV 80H,R2

MOV R0,#30H

MOV R1,#31H

S1:MOV A,@R0

MOV B,@R1

CJNE A,B,S

S:JNC S2 ;改为'JC S2',则对N个数从小到大排序

XCH A,B ;@R0<@R1则对调

MOV @R0,A

MOV @R1,B

S2:INC R0

INC R1

DJNZ R2,S1

MOV R2,80H

DEC R2

DJNZ R3,S0

JMP $

END

以上就是关于帮忙 汇编语言 数据的排序 急急急急急急!!1全部的内容,包括:帮忙 汇编语言 数据的排序 急急急急急急!!1、用单片机汇编语言编写从30H开始的100数据的排列 从小到大程序、求单片机汇编语言排序程序,哪位高手帮帮忙呀等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9746655.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存