“微机原理与接口技术”期中复习题答案 下载本文

内容发布更新时间 : 2024/5/3 11:57:16星期一 下面是文章的全部内容请认真阅读。

CLR C

SUBB A, #30H ;ASCII码变为BCD数字 SWAP A ANL 42H, #0FH ORL 42H, A

2、 将片内RAM的20H-24H单元中5个压缩BCD码拆开,并转换为10个ASCII码,依

次存入外部RAM2100H-2109H单元中。

ORG 0000H AJMP 0100H ORG 0100H

LOOP0: MOV R0, #20H

MOV R7, #05 MOV DPTR, #2100H

LOOP: MOV A, @R0

ANL A, #0FH ADD A, #30H MOVX @DPTR, A INC DPTR MOV A, @R0 ANL A, #0F0H SWAP A ADD A, #30H MOVX @DPTR, A INC DPTR INC R0 DJNZ R7, LOOP SJMP $ END

3、 请编写多字节加法子程序。入口条件有3个,即字节长度、加数首地址和被加数首地址,

累加和存放地址与加数存放单元相同。对源程序加注释和伪指令。

注:加数首地址放在R0中,被加数首地址放在R1中,字节长度放在R7中。 ORG 0000H

AJMP 0100H

ORG 0100H

ADDSUB: CLR C

6

LOOP: MOV A, @R0

ADDC A, @R1 MOV @R0, A INC R0 INC R1 DJNZ R7, LOOP RET END

4、 在片外数据存储器8000H和8001H单元内各有一个小于0CH的数,请编写源程序求出

这两个数的平方之和,要求采用调用查表子程序的方法实现。平方和存放在片内RAM中。对源程序加注释和伪指令。

注:平方和放在内部RAM20H中, 用DPTR作为外部RAM地址指针。

ORG 0000H AJMP MAIN ORG 0100H

MAIN: MOV DPTR, #8000H

MOVX A, @DPTR LCALL GETSQUARE MOV 20H, A INC DPTR MOVX A, @DPTR LCALL GETSQUARE ADD A, 20H XCH A, 20H SJMP $

GETSQUARE: ADD A, #01H

MOVC A, @A+PC RET

TAB: DB 0H, 1H, 4H, 9H, 10H, 19H, 24H,31H, 40H, 51H, 64H, 79H

END

5、 编写一程序将片外数据存储器中7000H~70FFH单元全部清零。

ORG 0100H MOV DPTR, #7000H MOV R0, #00H CLR A

LOOP: MOVX @DPTR, A

7

INC DPTR DJNZ R0, LOOP RET END

六、 读程序题

1.执行下列程序段后,(P1)=_9BH___。 MOV P1,#5DH CPL P1.1 CPL P1.2 CLR P1.6 SETB P1.7

2.执行下列程序段后,(A)=__8BH_____,(C)=_保持不变 ___。 MOV A,#C5H RL A

3.下列程序段执行后,(R0)=__7FH__,(7EH)=_00H___,(7FH)=_41H___。 MOV R0,#7EH MOV 7EH,#0FFH MOV 7FH,#40H INC @R0 INC R0 INC @R0

4.已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALL SUBTRN双字节指令后,(PC)=_0345H__,(61H)=__25H_____,(62H)= _01H___。 5.阅读下列程序,说明其功能。 MOV R0,#data MOV A,@R0 RL A MOV R1,A RL A RL A ADD A,R1 MOV @R0,A RET

把内存中地址为data单元中的值放大十倍

8

6.阅读程序并填空,形成完整的程序以实现如下功能。

有一长度为10字节的字符串存放在8031单片机内部RAM中,其首地址为40H,每个字符串的内容为7位,要求在每个字符串的D7位加上偶校验位。(以调用子程序的方法来实现。)

源程序如下: ORG 1000H MOV R0,#40H

MOV R7,#10

NEXT: MOV A, ① @R0 ACALL SEPA MOV @R0,A INC R0

DJNZ ② R7 ,NEXT

SJMP

$

SEPA: ③ JNC PSW.0,SRET

ORL A, ④ #80H

SRET: ⑤ RET

9