发布时间 : 星期三 文章单片机课后习题及答案更新完毕开始阅读
第四章、 习题
1. 设计一段单片机子程序,实现内存中数据块的传递。
*子程序功能:将内部RAM DATA1开始的一个数据块传送到区域DATA2,数据块长度data3 ORG 1000H
SUB1:MOV R0,#DATA1 MOV R1,#DATA2 MOV R3,#data3 ACALL LOOP LOOP:MOV A, @R0 MOV @R1,A INC R0 INC R1
DJNZ R3,LOOP DONE:RET
2、编程实现在外部RAM中把200CH开始的30H个字节数据传送到8100H开始的单元中去。
答: ORG 2000H
MOV R0, #30H MOV R1, #0CH MOV R2, #20H MOV R3, #00H MOV R4, #81H LOOP: MOV DPL,R1 MOV DPH,R2
MOVX A, @DPTR INC DPTR MOV R1, DPL MOV R2, DPH MOV DPL, R3 MOV DPH, R4 MOVX @DPTR, A INC DPTR MOV R3, DPL MOV R4, DPH DJNZ R0, LOOP END
3、 已知在内部RAM中有以array为首地址的数据区,依次存放单字节数组长度及数组内容,求这组数据的和,并将和接着该数据区存放。假定数组之和小于225,请编写程序。
**设数组长度为dam,它存放在array开始的第一个字节。R3记录数组长度,R0记录数组的间接地址(包含数组长度所占用单元),R1记录存放地址
文档
ORG 1000H
MOV R0,#array
MOV A,@R0 /数组长度送R3 MOV R3,A
INC R0 /求存放数组的新地址 ADD A,R0 /
MOV R1,A /存放数组的地址送R1 CLR C CLR A
LOOP:ADDC A,@R0 MOV @R1,A DJNZ R3 LOOP
END
5、试设计一个能实现多字节的加法和减法的子程序,并编写主程序调用该子程序,实现将存放在分别以30H和40H开始的连续16个字节数据之和,和值存放在以50H开始的地址中(假设和值没有溢出)。 答: ORG 2000H
Main: MOV R0, #30H MOV R1, #40H MOV R2, #10H MOV R3, #50H CLR C LCALL loop
Sjmp ﹩ END
LOOP: MOV A, @R0
ADDC A, @R1;S UBB A,@R1 PUSH R3
PUSH R1 POP R3 POP R1
MOV @R1, A
XCH A,R3 XCH A,R1 XCH A,R3 INC R0
文档
INC R1 INC R3
DJNZ R2, LOOP
JC OTHER;最高位有进(借)位,转去处理。
RET 减法同。
文档