答:堆栈在中端过程中用来保护现场数据,复位后SP=7H,而堆栈一般设置在通用ROM区(30H-7FH),在系统初始化时候要从新设置。
10、内部 RAM低 128单元划分为哪 3个主要部分?说明各部分的使用特点。
答:80C51内部128B的数据RAM区,包括有工作寄存器组区、可直接位寻址区和数据缓冲区。各区域的特性如下:
(1) 00H~1FH为工作寄存器组区,共分4组,每组占用8个RAM字节单元,每个单元
作为一个工作寄存器,每组的8个单元分别定义为8个工作寄存器R0~R7。当前工作寄存器组的选择是由程序状态字PSW的RS1、RS0两位来确定。如果实际应用中并不需要使用工作寄存器或不需要使用4组工作寄存器,不使用的工作寄存器组的区域仍然可作为一般数据缓冲区使用,用直接寻址或用Ri的寄存器间接寻址来访问。
(2) 20H~2FH为可位寻址区域,这16个字节的每一位都有一个地址,编址为00H~7FH。
当然,位寻址区也可以用作字节寻址的一般数据缓冲区使用。
(3)30H~7FH为堆栈、数据缓冲区。 11、简述MCS-51单片机存储区的划分。
答:MCS-51单片机的存储器从物理结构上分为:片内和片外数据存储器,片内和片外程序存储器。
2)从逻辑上分别可划分为:片内统一寻址的64K程序存储器空间(0000H---FFFFH);64KB的片外数据存储器空间(0000H---FFFFH);256B的片内数据存储器空间(00H---FFH)。 12、MCS-51基本型单片机的中断入口地址各为多少。 答:外部中断0 中断入口地址 0003H 定时/计数器0 中断入口地址 000BH 外部中断1 中断入口地址 0013H 定时/计数器1 中断入口地址 001BH 串行接口 中断入口地址 0023H
13、什么是指令周期、机器周期和时钟周期?
答:指令周期:指令的执行时间;机器周期:CPU完成一个最简单的指令所需要的时间;时钟周期:晶振信号周期就是时钟周期。
14、已知一MCS51单片机系统使用6MHZ的外部晶体振荡器,计算:该单片机系统的状态周期与机器周期各为多少?
解:由于晶振为6MHz,所以机器周期为2us,因为一个机器周期由6个状态周期组成,所以状态周期1/3us
15、8031单片机需要外接程序存储器,实际上它还有多少条I/O线可以用?当使用外部存储器时,还剩下多少条I/O线可用?
答:8031系统必须外接程序促成器,原则上说,P0和P2口要用作数据和地址总线,所以只有P1和P3口可用作I/O口,共16条I/O线。在使用外部存储器时,除了占用P0和P2口外,还需要用P3口RD(P3.7)和WR(P3.6)两条控制线,所以这种情况下就只剩下14条I/O线可用了。
第4章 思考题及习题参考答案 1. 寻址方式是什么?
答:寻址方式是寻找操作数或操作数地址的方式。
第 9 页 共 47 页
2. 89C51指令系统有哪几种寻址方式?
答:89C51的寻址方式有七种。即:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。
3、访问特殊功能寄存器SFR可以采用哪些寻址方式?
答:直接寻址和位寻址方式。
4、访问RAM单元可以采用哪些寻址方式?访问外部RAM单元有哪些指令?
答:直接寻址、寄存器间接寻址和位寻址方式。
访问外部RAM单元的指令有4条: MOVX A,@DPTR MOVX A,@Ri MOVX @DPTR,A
MOVX @Ri,A
5、访问外部程序存储器可以采用哪些寻址方式?访问外部程序存储器有哪些指令?
答:立即寻址、变址寻址和相对寻址方式。
访问外部程序存储器的指令有2条 MOVC A,@A+DPTR MOVC A,@A+PC
6、试写出完成以下每种操作的指令序列。 (1)将R0的内容传送到片内RAM 20H; (2)将R1的内容传送到R0;
(3)内部RAM单元10H的内容传送到外部RAM单元1000H; (4)外部RAM单元1000H的内容传送到R5; (5)外部ROM单元1000H的内容传送到R5;
(6)外部RAM单元2000H的内容传送到外部RAM单元2001H。 答:(1)MOV 20H,R0
(2) MOV A,R1 MOV R0,A (3)MOV A,10H MOV DPTR,#1000H MOVX @DPTR,A
(4)MOV DPTR,#1000H MOVX A,@A+DPTR MOV R5,A
(5) MOV DPTR,#1000H MOV A,#00H MOVC A,@A+DPTR MOV R5,A
(6) MOV DPTR,#2000H MOVX A,@DPTR
第 10 页 共 47 页
INC DPTR MOVX @DPTR,A
7. 设内部RAM (30H)=60H, (60H)=10H, (10H)=20H, (R1)=22H,(P1)=0AH, 分析以下程序执行后(30H)=?, (60H)= ?, (10H)= ?,(A)= ?,(B)= ?,(P2)= ?每条指令的机器码为多少?
MOV R0, #30H MOV A, @R0 MOV R1, A MOV B, @R1 MOV @R1, P1 MOV P2, P1 MOV 10H, #90H
答: MOV R0, #30H ; (R0)= 30H , 78 30 MOV A, @R0 ; (A) =60H , E6 MOV R1, A ; (R1) =60H , F9 MOV B, @R1 ; (B) = 10H , 87 F0 MOV @R1, P1 ; (60H) =0AH , A7 90
MOV P2, P1 ; (P2) =0AH , 85 90 A0 MOV 10H, #90H ; (10H) =90H , 75 10 90
(30H)= 60H, (60H)= 0A H, (10H)= 90H,(A)= 60H,(B)= 10H,(P2)= 0AH
8. 设外部RAM (2030H)=0FH, 分析以下指令执行后(DPTR)=?, (30H)=?, (2030H)=?(A)=?每条指令的机器码为多少?
MOV DPTR, #2030H MOVX A, @DPTR MOV 30H, A MOV A, #3FH MOVX@DPTR, A 答:
MOV DPTR, #2030H ; (DPTR) = 2030H , 90 20 30
MOVX A, @DPTR ; (A) =0FH , E0
MOV 30H, A ; (30H) =0FH , F5 30 MOV A, #3FH ; (A) =3FH , 74 3F MOVX@DPTR, A ; (2030H)=3FH , F0
执行结果为: (DPTR)=2030H, (30H)=0FH, (2030H)=3FH ,(A)=3FH。
9、编写指令实现下列位操作。 (1)使累加器的最高2位清零; (2)屏蔽(清零)20H的高4位;
(3)将E0H的低4位取反,高4位不变;
第 11 页 共 47 页
(4)将P0的低2位置1。
(5)将10H的内容取补后存放到20H 答:(1)CLR ACC.7 CLR ACC.6
(2) ANL 20H,#0FH (3) XRL E0H,#0FH (4)ORL P0,#03H (5) XRL 10H,#0FFH INC 10H MOV 20H,10H
10. 在外部程序存储器中, 从1020H单元开始依次存放0~9的平方值: 0、 1、 4、 9、 ?、81, 要求依据累加器A中的值(0~9)来查找所对应的平方值, 试设计程序实现。 答:MOV DPTR, #1020H MOVC A, @A+DPTR
11. 设(R0)=20H, (20H)=40H, (A)=58H, 则: 执行 XCH A, @R0 后 (A)=?, (20H)=? 若执行 XCHD A, @R0 后 (A) =?, (20H) =? 答:执行 XCH A, @R0 后 (A)=40H, (20H)=58H 若执行 XCHD A, @R0 后 (A) =50H, (20H) =48H 12、试编写程序序列,完成两个16位数的减法:(30H)(31H)-(10H)(11H) →(30H)(31H)。 答:CLR C
MOV A,31H SUBB A,11H MOV 31H,A MOV A,30H SUBB A,10H MOV 30H,A
13、试编写程序,将R0中的低4位数与R1中的高4位数合并成一个8位数,并将其存放在R0中。
答:MOV A,R0
ANL A,#0FH MOV B,A MOV A,R1 ANL A,#0F0H ORL A,B MOV R0,A
14. 设计双字节无符号数加法程序实现(R0 R1)+(R2 R3) → (R4 R5), R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节,假设其和不超过16位。
第 12 页 共 47 页