《单片机系统设计基础》练习题答案 - 王雷 下载本文

内容发布更新时间 : 2024/5/2 17:42:09星期一 下面是文章的全部内容请认真阅读。

用指令使PCON中IDL位置1,系统便可进入空闲方式。空闲方式的退出有两种方法,即中断方式和硬件复位方式。

执行一条PCON寄存器的PD位置1的指令(是运行程序中的最后一条指令),单片机便可进入掉电方式。退出掉电方式的唯一方法是硬件复位。

18. 判断 对PCON中的PCON.0位,若要置1或清0,采取的操作为:

① 可采用位可寻址的位操作指令( ); ② 可采用字节操作的方法( √ );

③ 可采用位寻址的位操作或字节操作( )。

19. 80C51单片机的工作方式分为几种?EA/Vpp和ALE/PROG引脚在程序执行方式和编程方式时作用有何不同?(第二问略掉,答案可参见第2题填空。)

答:80C51具有四种工作方式:程序执行方式、复位方式、低功耗方式和编程方式。

20. 单片机外围扩展电路硬件结构设计的主要内容包括哪些?(略)

练习题三

1. 问答题

(1) 80C51指令系统有哪几种寻址方式?访问特殊功能寄存器采用什么寻址方式?

答:80C51指令系统中字节操作中的寻址方式有:寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、立即寻址方式、相对寻址方式;位操作中的寻址方式有:位直接地址寻址方式、位寄存器寻址方式。

(2) 指令系统中的间接寻址范围是多少?答:64K。

(3) 变址寻址主要用于什么场合?其寻址范围是多少?答:查表,64K。 (4) 相对寻址方式有什么特点?其寻址范围是多少? 答:相对寻址方式是指根据指令机器码中现的相对偏移量,从而计算出程序的转移目的地址。转移目的地址可向前,或向后,rel的取值范围为-128~+127。 (5) CPU读程序存储器ROM、CPU读写片外RAM,以及片内RAM之间的信号传送的指令

在操作助记符,寻址方式有什么不同?

答:CPU读程序存储器ROM的指令操作助记符是MOVC,寻址方式为间接寻址;CPU读写片外RAM的指令操作助记符是MOVX,寻址方式为间接寻址;片内RAM之间信号传送的指令操作助记符是MOV,寻址方式为直接寻址。 (6) “DA A”指令的作用是什么?怎样使用?

答:用于对BCD码十进制加法运算结果的修正。跟在ADD指令后即可。 (7) 压栈指令和出栈指令的作用是什么?SP如何变化?

答:压栈指令:将direct中的数据压入堆栈,SP变化方式如下所示:

PUSH direct;(SP )←( (SP)+1 ) ,(SP )←(direct )。

出栈指令:将堆栈中的数据弹入direct中,SP变化方式如下所示: POP direct;(direct )←( (SP) ) ,(SP )←( (SP)-1 )。 (8) 立即数为什么不能作目的操作数?

答:因为一个立即数只存在于指令代码中,不能用它来定位一个存储单元。

2. 判断下列指令是否正确。 (1) MOV R0,@R1 错 (2) MOV #25H,A 错 (3) MOV A,#25H 对 (4) MOV A,@R2 错 (5) MOV @R1,A 对 (6) MOVX A,1234H 错 (7) MOVX R0,@DPTR 错 (8) MOVX @DPTR,A 对 (9) PUSH DPTR 错 (10) PUSH DPH 对 (11) PUSH DPL 对 (12) PUSH R7 错 (13) PUSH 07H 对 (14) POP A 错 (15) POP ACC 对

(16) 通过加法实现2×A运算,判断下列指令的正误

● ADD A,A 错 ● ADD A,ACC 对

(17) 在程序存储器0010H处分别存放下列指令,判断其正误 ● AJMP 001AH 对

● AJMP 0800H 错 ● AJMP 07FFH 对 ● AJMP 0980H 错

3. 计算题

(1) 已知如下一段程序: 2100H MOVC A,@A+PC ;单字节 2101H RET ;单字节 2102H NOP ;单字节 DB ??

试确定变址寄存器A的取值范围;计算所能读出的字节数的地址区间;利用该程序能否读出2200H单元的字节常数。

答:A的取值范围为:2-255;所能读出的字节数的地址区间为:2103H-2200H;利用该程序能读出2200H单元的字节常数。 (2) 在程序存储器2000H处存有“SJMP LOOP”指令,试求指令的机器码。(略) ● 当LOOP EQU 2060H时;

● 当LOOP EQU 1FA2H时。

(3) 在程序存储器2500H处存有“CJNE A,#25H,LOOP”指令,试求指令的机器码。(略) ● 当LOOP EQU 2550H时;

● 当LOOP EQU 24B2H时。

(4) 已知如下一段程序,试求“SJMP LOOP”的机器码。(略) ORG 1000H SJMP LOOP ? ?

RET

LOOP EQU 0FA0H (5) 已知调用指令如下所示: ORG 1000H MOV SP,#50H LCALL 5431H NOP NOP

RET

试写出执行“LCALL 5431H”后,(51H)=?(52H)=?(PC)=? 答:(51H)=06H,(52H)=10H,(PC)=5431H。

(6) 已知绝对转移指令如下所示,试求“AJMP TRAN”的机器码。(略) ORG 97FEH AJMP TRAN ? ?

TRAN

RET EQU

9A00H

4. 指令分析与编程

(1)已知(A)=7AH,(R0)=30H,(30H)=A5H,(PSW)=80H,请填写每条指令的执行结果(各指令互不影响)。

① XCH A,R0; (A)=30H ② XCH A,30H; (A)= A5H ③ XCH A,@R0; (A)= A5H ④ XCHD A,@R0; (A)=75H ⑤ SWAP A; (A)=A7H ⑥ ADD A,R0; (A)=AAH ⑦ ADD A,30H; (A)=1FH ⑧ ADD A,#30H; (A)= AAH ⑨ ADDC A,30H; (A)= 20H ⑩ SUBB A,30H; (A)=D4H ⑾ SUBB A,#30H; (A)=49H

(2)已知(A)=83H,(R0)=17H,(17H)=34H,试写出执行下列程序段后A的内容。

ANL A,#17H ORL 17H,A XRL A,@R0 CPL A 结果:(A)=CBH

(3)已知两个十进制数分别在内部RAM 40H和50H单元开始存放(低位在前),其字节长度存放在内RAM 30H单元。编写程序实现两个十进制数求和,并把求和结果存放在40H开始的单元中。 答: ORG 0000H MOV R0, #40H MOV R1, #50H MOV A, #40H ADD A,30H MOV R2,A LCALL SJZA MOV A, R2 MOV R0,A JC OVER1 MOV @R0,#00H SJMP OVER2 OVER1: MOV @R0,#01H SJMP OVER2 SJZA: CLR C

SJZB: MOV A,@R0 ADDC A,@R1