单片机课后练习答案 下载本文

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

(A)PC是1个不可寻址的特殊功能寄存器 (对)

(B)单片机的主频越高,其运算速度越快 (对)

(C)在MCS----51单片机中,1个机器周期等于1微秒 (错)

(D)特殊功能寄存器SP内装的是栈顶首地址单元的内容 (错)

2.22 如果手中仅有一台示波器,可通过观察哪个引脚的状态,来大致判断MCS----51单片 机正在工作?

答:ALE 引脚。

第三章 MCS-51的指令系统

3.1 判断以下指令的正误:

(1) MOV 28H,@R2 (2) DEC DPTR (3) INC DPTR (4) CLR R0

(5) CPL R5 (6) MOV R0,R1 (7) PUSH DPTR (8) MOV F0,C (9)MOV F0,Acc.3 (10)MOVX A,@R1 (11) MOV C,30H (12)RLC R0

答:(3)、(8)、(10)、(11)对,其余错。

3.2 判断下列说法是否正确。

(A)立即寻址方式是被操作的数据本身在指令中,而不是它的地址在指令中。(√)

(B)指令周期是执行一条指令的时间。 (√)

(C)指令中直接给出的操作数称为直接寻址。 (×)

3.3在基址加变址寻址方式中,以(A)作变址寄存器,以(DPTR)或(PC)作基址寄存器

3.4 MCS-51共有哪几种寻址方式?各有什么特点?

答: 共有7种寻址方式。

(1)寄存器寻址方式 操作数在寄存器中,因此指定了寄存器就能得到操作数。

(2)直接寻址方式 指令中操作数直接以单元地址的形式给出,该单元地址中的内容就 是操作数。

(3)寄存器间接寻址方式 寄存器中存放的是操作数的地址,即先从寄存器中找到操作 数的地址,再按该地址找到操作数。

(4)立即寻址方式 操作数在指令中直接给出,但需在操作数前面加前缀标志“#”。

(5)基址寄存器加变址寄存器间接寻址方式 以DPTR或PC作基址寄存器,以累加器 A作为变址寄存器,并以两者内容相加形成的16位地址作为操作数的地址,以达到访问数 据表格的目的。

(6)位寻址方式 位寻址指令中可以直接使用位地址。

(7)相对寻址方式 在相对寻址的转移指令中,给出了地址偏移量,以“rel”表示,即 把PC的当前值加上偏移量就构成了程序转移的目的地址。

3.5 MCS-51指令按功能可以分为哪几类?

答:MCS-51指令系统按功能分为:数据传送类(28条);算术操作类(24条);逻辑运算 类(25条);控制转移类(17条);位操作类(17条)。

3.6 访问SFR,可使用哪些寻址方式?

答:一般采用直接寻址,对于SFR中字节地址能被8整除的SFR可以使用位寻址,对于SFR 中的A、B、DPTR寄存器可以采用寄存器寻址。

3.7 指令格式是由(操作码)和(操作数)所组成,也可能仅由(操作码)组成。

3.8 假定累加器A中的内容为30H,执行指令:

1000H:MOVC A,@A+PC

后,把程序存储器(1031H)单元的内容送入累加器中

3.9 在MCS----51中,PC和DPTR都用于提供地址,但PC是为访问(程序)存储器提供地 址,而DPTR是为访问(数据)存储器提供地址。

3.10 在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是 操作数的(地址)。

3.11 该程序段的功能是什么?

PUSH A

PUSH B

POP A

POP B

答:功能是A、B内容互换

3.12 已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H)=FFH。下列程序执行后:

POP DPH POP DPL

MOV DPTR,#4000H RL A MOV B,A

MOVC A,@A+DPTR PUSH A MOV A,B INC A

MOVC A,@A+DPTR PUSH A RET

ORG 4000H

DB 10H,80H,30H,50H,30H,50H

A=50H SP=50H (51H)=30H (52H)=50H PC=5030H

3.13 写出完成如下要求的指令,但是不能改变未涉及位的内容。

(A)把Acc.3,Acc.4,Acc.5和Acc.6清0。

解:ANL A,#87H

(B)把累加器A的中间4位清0。

解:ANL A,#C3H

(C)使Acc.2和Acc.3置1。

解:ORL A,#0CH

3.14 假定A=83H,(R0)=17H,(17H)=34H,执行以下指令:

ANL A,#17H

ORL 17H,A

XRL A,@R0

CPL A

后,A的内容为(0CBH)

3.15 假设A=55H,R3=0AAH,在执行指令后ANL A,R3后, A=(00H), R3=(0AAH)

3.16 如果DPTR=507BH,SP=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下 列指令后:

POP DPH

POP DPL

POP SP

则:DPH=(3CH) DPL=(5FH) SP=(4FH)

3.17 假定SP=60H,A=30H,B=70H,执行下列指令:

PUSH A

PUSH B

后,SP的内容为(62H),61H单元的内容为(30H),62H单元的内容为(70H)。

3.18借助本书中的指令表:表3-3~表3-7对如下的指令代码(16进制)进行手工反汇编。

FF C0 E0 E5 F0 F0

解:查表可知

FF MOV R7,A

C0 E0 PUSH 0E0H

E5 F0 MOV A,0F0H

F0 MOVX @DPTR, A

第四章 MCS-51汇编语言程序设计

4.1 用于程序设计的语言分为哪几种?它们各有什么特点?

答:用于程序设计的语言基本上分为三种:机器语言、汇编语言和高级语言。

(1)机器语言:在单片机中,用二进制代码表示的指令、数字和符号简称为机器语言,直 接用机器语言编写的程序称为机器语言程序。用机器语言编写的程序,不易看懂,不便于记 忆,且容易出错。(2)汇编语言具有如下特点:A、汇编语言是面向机器的语言,程序设计 人员必须对MCS----51单片机的硬件有相当深入的了解。B、助记符指令和机器指令一一对 应,所以用汇编语言编写的程序效率高,占用的存储空间小,运行速度快,因此用汇编语言 能编写出最优化的程序。C、汇编语言程序能直接管理和控制硬件设备(功能部件),它能 处理中断,也能直接访问存储器及I/O接口电路。(3)高级语言:高级语言不受具体机器的

限制,都是参照一些数学语言而设计的,使用了许多数学公式和数学计算上的习惯用语,非 常擅长于科学计算。计算机不能直接识别和执行高级语言,需要将其“翻译”成机器语言才 能识别和执行。

4.3 解释下列术语:“手工汇编”、“机器汇编”、“交叉汇编”以及“反汇编”。

答、手工汇编:通常把人工查表翻译指令的方法称为“手工汇编”。机器汇编:机器汇编实 际上是通过执行汇编程序来对源程序进行汇编的。交叉汇编:由于使用微型计算机完成了汇

编,而汇编后得到的机器代码却是在另一台计算机(这里是单片机)上运行,称这种机器汇 编为“交叉汇编”。反汇编:有时,在分析现成产品的ROM/EPROM中的程序时,要将二进 制数的机器代码语言程序翻译成汇编语言源程序,该过程称为反汇编。

4.4 下列程序段经汇编后,从1000H开始的各有关存储单元的内容将是什么?

ORG 1000H

TAB1 EQU 1234H

TAB2 EQU 3000H

DB “MAIN”

DW TAB1,TAB2,70H