当前位置:文档之家› 单片机课后习题及答案

单片机课后习题及答案

单片机课后习题及答案
单片机课后习题及答案

第四章、习题

1.设计一段单片机子程序,实现内存中数据块的传递。

*子程序功能:将内部RAM DA TA1开始的一个数据块传送到区域DATA2,数据块长度data3 ORG 1000H

SUB1:MOV R0,#DATA1

MOV R1,#DA TA2

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

减法同。

相关主题
文本预览
相关文档 最新文档