将存放片内56h、51h、58h单元中的数据,按从小到大顺序排序,结果存放56h、57h、58h。单片机的程序编写
答案:2 悬赏:30
解决时间 2021-02-28 05:48
- 提问者网友:无悔疯狂
- 2021-02-27 22:20
将存放片内56h、51h、58h单元中的数据,按从小到大顺序排序,结果存放56h、57h、58h。单片机的程序编写
最佳答案
- 二级知识专家网友:厌今念往
- 2021-02-27 23:30
这个是我以前回答别人的100个单元数据比较调换的汇编,你可以参考下!!
20H做中转
START:
MOV R1,#30H //R1存放开始地址30h
MOV R2,#100 //R2存放要比较的100个数
CONTINUE:
MOV A,@R1 //R1地址(30h)中数即入acc
MOV 20H,A //acc中数(30h中的数)入20h
INC R1 //R1中地址+1,指向31h
MOV A,@R1 //31h中数入acc
CJNE A,20H,EXCHANGE//比较不等转交换数据
CHECK100:
DJNZ R2,CONTINUE//R2-1不等于0继续比较
OVER:
AJMP OVER //比较完成
EXCHANGE:
MOV @R1,20H //30h中的数存放到31h地址
DEC R1 //R1地址-1,指向30h
MOV @R1,A //acc中的数(31h中的数)存放到30h地址
INC R1 //R1+1指向31h
AJMP CHECK100 //交换完成跳转回程序
20H做中转
START:
MOV R1,#30H //R1存放开始地址30h
MOV R2,#100 //R2存放要比较的100个数
CONTINUE:
MOV A,@R1 //R1地址(30h)中数即入acc
MOV 20H,A //acc中数(30h中的数)入20h
INC R1 //R1中地址+1,指向31h
MOV A,@R1 //31h中数入acc
CJNE A,20H,EXCHANGE//比较不等转交换数据
CHECK100:
DJNZ R2,CONTINUE//R2-1不等于0继续比较
OVER:
AJMP OVER //比较完成
EXCHANGE:
MOV @R1,20H //30h中的数存放到31h地址
DEC R1 //R1地址-1,指向30h
MOV @R1,A //acc中的数(31h中的数)存放到30h地址
INC R1 //R1+1指向31h
AJMP CHECK100 //交换完成跳转回程序
全部回答
- 1楼网友:花一样艳美的陌生人
- 2021-02-27 23:46
两段重复的段码,其实只要看其中一段就行了,更清晰点
ORG 0000H
MOV A,56H;56 51 58to 56 57 58
CJNE A,51H,NEQ0 ;两数相等时,56、57单元均存此数
MOV LE,A
MOV MI,A
AJMP TWO
NEQ0: JC LESS0
MOV MI,A;寄存器寻址:大的数给MI:57H
MOV LE,51H;直接寻址:小的数给LE:56H
AJMP TWO
LESS0: MOV
MOV LE,A
MOV MI,51H
AJMP TWO
;下面是重复码,可以只看其中一半
TWO: MOV A,58H;56 51 58to 56 57 58
CJNE A,57H,NEQ1 ;两数相等时,56、57单元均存此数
MOV MI,A
MOV GE,A
AJMP $
NEQ1: JC LESS1
MOV GE,A
MOV MI,58H
AJMP $
LESS1: MOV
MOV MI,A
MOV GE,58H
AJMP $
LE EQU 56H
MI EQU 57H
GE EQU 58H
END
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯