📄 sort_dbest.asm
字号:
org 0000h
jmp 40h
org 40h
mov r7,#5
mov r0,#40h
;***********************************************************************************
;子程序:SORT_D
;功能:实现单字节无符号数据块排序(增序)
;入口条件:数据块的首址在R0中,字节数在R7中
;出口信息:完成排序(增序)
;说明:SORT代表排序,D代表单字节
;***********************************************************************************
SORT_D:mov 20h,r1
push 20h
mov 21h,r2
push 21h
mov 22h,r3
push 22h
dec r7
mov a,r7
mov r3,a ;r3保存外层循环比较次数
mov a,r0
mov r1,a ;R1存放R0值,比较的基准位置,便于外层循环的进行
outloop:mov a,r3
mov r2,a ;r2保存内层循环比较次数
mov a,r1
mov r0,a ;R0用于指示内层循环数据中的偏移量
mov a,@r0 ;取数放于a中
inc r0 ;以便取下一数用于比较
inloop: mov r4,a ;暂存a中的值
subb a,@r0
jc next ;前一个数小于后一个数即有借位就转移
mov a,r4
xch a,@r0 ;前一个数大于后一个数就交换
mov @r1,a
sjmp next1
next: mov a,r4
next1:
inc r0 ;为了使a继续和再下一个位置的数比较
djnz r2,inloop ;内层循环未执行完时跳到inloop处继续执行
dec r0
inc r1 ;使比较基准位置的值发生改变
djnz r3,outloop ;处层循环未执行完时跳到outloop处继续执行
pop 22h
mov r3,22h
pop 21h
mov r2,21h
pop 20h
mov r1,20h
ret
;************************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -