《单片机原理及应用-基于Proteus单片机系统设计及应用》课后习题答案

发布时间 : 星期四 文章《单片机原理及应用-基于Proteus单片机系统设计及应用》课后习题答案更新完毕开始阅读

《单片机原理及应用-基于Proteus单片机系统设计及应用》

习题解答

本答案由Elvis提供,请到413宿舍表达感谢

第2章 80C51单片机的指令系统

1.简述下列基本概念。

答 指令:CPU根据人的意图来执行某种操作的命令。 指令系统:一台计算机所能执行的全部指令集合。

机器语言:用二进制编码表示,计算机能直接识别和执行的语言。 汇编语言:用助记符、符号和数字来表示指令的程序语言。

高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入

了解的通用性语言。

2.什么是计算机的指令和指令系统? 答 见1题。

3.简述80C51汇编指令格式。

答 操作码[目的操纵数][,源操作数]

4.简述80C51的寻址方式和所能涉及的寻址空间。 答 立即数寻址:程序存储器ROM。

直接寻址:片内RAM低128B和特殊功能寄存器。 寄存器寻址:R0~R7,A,B,C,DPTR。 寄存器间接寻址:片内RAM低128B,片外RAM。 变址寻址:程序存储器64KB。 相对寻址:程序存储器256B范围。

位寻址:片内RAM的20H~2FH字节地址,部分特殊功能寄存器。 5.要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式? 答 SFR:直接寻址,位寻址;片外RAM:寄存器间接寻址。

6.在80C51片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。请分析下面各是什么指令,说明源操作数的寻址方式及按顺序执行后的结果。

答 MOV A,40H 直接寻址

MOV R0,A 寄存器寻址 MOV P1,#0F0H 立即数寻址 MOV @R0,30H 直接寻址 MOV DPTR,#3848H 立即数寻址 MOV 40H,38H 直接寻址

MOV R0,30H 直接寻址 MOV P0,R0 寄存器寻址

MOV 18H,#30H 立即数寻址 MOV A,@R0 寄存器间接寻址 MOV P2,P1 直接寻址

均为数据传送指令,结果(参见下图)为 30H 38H 40H 48H

(18H)=30H,(30H)=38H,(38H)=40H (40H)=40H,(48H)=90H R0=38H,A=40H,P0=38H,P1=FOH,P2=FOH,DPTR=3848H 7.对80C51片内RAM高128B的地址空间寻址要注意什么? 答 用直接寻址,寄存器寻址,位寻址。 8.指出下列指令的本质区别。

答 MOV A,data 直接寻址

MOV A,#data 立即数寻址 MOV data1,data2 直接寻址 MOV 74H,#78H 立即数寻址

9.设R0的内容为32H,A的内容为48H,片内RAM的32H内容为80H,40H的内容为08H。请指出在执行下列程序段后各单元内容的变化。

MOV A,@R0 ;((R0))=80H→A MOV @R0,40H ;(40H)=08H→(R0) MOV 40H,A ;(A)=80H→40H MOV R0,#35H ; 35H→R0 解 (R0)=35H (A)=80H (32H)=08H (40H)=80H

10.如何访问SFR,可使用哪些寻址方式? 答 访问SFR:直接寻址,位寻址,寄存器寻址。 11.如何访问片外RAM单元,可使用哪些寻址方式? 答 只能采用寄存器间接寻址(用MOVX指令)。 12.如何访问片内RAM单元,可使用哪些寻址方式?

答 低128B:直接寻址,位寻址,寄存器间接寻址,寄存器寻址(R0~R7)。 高128B:直接寻址,位寻址,寄存器寻址。

RAM 38H 40H 48H 90H 13.如何访问片内外程序存储器,采用哪些寻址方式? 答 采用变址寻址(用MOVC指令)。 14.说明十进制调整的原因和方法。

答 压缩BCD码在进行加法运算时本应逢十进一,而计算机只将其当作十六进制数处理,此时得到的结果不正确。用DAA指令调整(加06H,60H,66H)。

15.说明80C51的布尔处理机功能。 答 用来进行位操作。

16.已知(A)=83H,(R0)=17H,(17H)=34H,请指出在执行下列程序段后A的内容。 解 ANL A,#17H ;83H∧17H=03H→A

ORL 17H,A ;34H∨03H=37H→17H XRL A,@R0 ;03H异或37H=34H CPL A ;34H求反等于CBH 所以 (A)=CBH

17.使用位操作指令实现下列逻辑操作。要求不得改变未涉及位的内容。 解 (1) 使ACC.0置1

SETB ACC.0 或 SETB EOH (2) 清除累加器高4位

CLR ACC.7 CLR ACC.6 CLR ACC.5 CLR ACC.4

(3)清除ACC.3,ACC.4,ACC.5,ACC.6

CLR ACC.6 CLR ACC.5 CLR ACC.4 CLR ACC.3

18.编写程序,将片内RAM R0~R7的内容传送到20H~27H单元。 解 MOV 27H,R7 MOV 23H,R3

MOV 26H,R6 MOV 22H,R2 MOV 25H,R5 MOV 21H,R1 MOV 24H,R4 MOV 20H,R0

19.编写程序,将片内RAM的20H,21H,22H三个连续单元的内容依次存入2FH,2EH,2DH中。

解 MOV 2FH,20H

MOV 2EH,21H MOV 2DH,22H

20.编写程序,进行两个16位数的减法:6F5DH一13B4H,结果存入片内RAM的30H和31H单元,30H存差的低8位。

解 CLR C

MOV A,#5DH ;被减数低8位→A

MOV R2,#B4H ;减数低8位→R2

SUBB A,R2 ;被减数减去减数,差→A MOV 30H,A ;低8位结果→30H MOV A,#6FH ;被减数高8位→A MOV R2,#13H ;减数高8位→R2

SUBB A,R2 ;被减数减去减数,差→A MOV 31H,A ;高8位结果→31H

21.编写程序,若累加器A的内容分别满足下列条件时,则程序转至LABEL存储单元。设A中有的是无符号数。

解 (1) A≥10

CJNE A,#10,L1 ;(A)与10比较,不等转L1 或: CLR C L2:LJMP LABEL ;相等转LABEL SUBB A,#0AH L1:JNC L2 ;(A)大于10,转LABEL JZ LABEL JNC LABEL

(2)A>10

CJNE A,#10,L1 ;(A)与10比较,不等转L1 或: CLR C SJMP L3 ;相等转L3 SUBB A,#0AH L1:JNC L2 ;(A)大于10,转L2 JNC LABEL SJMP L4 ;(A)小于10,转L4 L2:JMP LABEL ;无条件转LABEL

(3)A≤10

CJNE A,#10,L1 ;(A)与10比较,不等转L1 或: CLR C L2:LJMP LABEL ;相等转LABEL SUBB A,#0AH L1:JC,L2 ;(A) 小于10,转LABEL JC LABEL JZ LABEL

22.已知SP=25H,PC=2345H,(24H)=12H,(25H)=34H,(26H)=56H。问此时执行“RET”指令后,SP=? PC=?

解 SP=23H,PC=3412H

23.已知SP=25H,PC=2345H,标号LABEL所在的地址为3456H。问执行长调用指令“LCALL LABEL”后,堆栈指针和堆栈内容发生什么变化?PC的值等于什么?

解 SP=27H,(26H)=48H,(27H)=23H,PC=3456H

24.上题中LCALL能否直接换成ACALL指令,为什么? 如果使用ACALL指令,则可

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