单片机课后习题及答案

发布时间 : 星期三 文章单片机课后习题及答案更新完毕开始阅读

第四章、 习题

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 减法同。

文档

联系合同范文客服:xxxxx#qq.com(#替换为@)