单片机原理与应用练习题3答案

练习题3答案

1. 简述下列基本概念:指令,指令系统,机器语言,汇编语言。 答:指令是单片机CPU执行某种操作的命令。

指令系统是一台计算机所能执行的指令集合。

机器语言即二进制代码语言,是计算机可以直接识别。

汇编语言是用助记符、字符串和数字等来表示指令的程序语。

2. 简述AT89S51单片机的指令格式 答:该单片机的指令由两部分组成,即操作码和操作数。操作码用来规定指令进行什么操作,而操作数则是指令操作的对象,操作数可能是一个具体的数据,也可能是指出到哪里取得数据的地址或符号。指令格式一般为:

[ 标号:] 操作码 [操作数1][,操作数2][,操作数3] [;注释]

3. 简述AT89S51的寻址方式和所能涉及的寻址空间 答:共有7种寻址方式,见表3-2。

分别是:(1)寄存器寻址:寻址范围为通用寄存器组,共4组32个,但只能使用当前寄存器

表3-2 寻址方式及相应的寻址存储器范围 寻 址 方 式 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址 程序存储器ROM 片内RAM低128B,特殊功能寄存器 工作寄存器R0~R7,A, C, DPTR,AB 片内RAM低128B,片外RAM 程序存储器ROM(@A+DPTR,@A+PC) 程序存储器ROM (相对寻址指令的下一指令PC值加-128~+127) 片内RAM的20H~2FH字节地址中所有的位,可位寻址的特殊功能寄存器 寻 址 存 储 器 范 围 组,因此使用前需要通过对PSW种的RS1、RS0位的状态进行设置;(2)直接寻址:寻址范围为内部RAM,包括低128位用户RAM区和高128位专用寄存器;(3)寄存器间接寻址:寻址范围为内部RAM低128位,外部RAM 64KB(低256单元可以使用DPTR和R0、R1作为间接寻址寄存器,而其他单元只能用DPTR作为间接寻址寄存器);(4)立即寻址:直接给出立即数,不涉及寻址空间;(5)变址寻址:只对程序寄存器进行寻址;(6)相对寻址:以PC的内容为基值,加上指令机器代码中‘相对地址’形成新的PC值转移;(7)位寻址:寻址空间包括内部RAM位寻址区(20~2FH)和专用寄存器的可寻址位。

4. 要访问片外程序存储器和片外数据存储器,应采用哪些寻址方式?

答:访问片外程序存储器采用变址寻址方式,片外数据存储器采用寄存器间接寻址方式,且用DPTR可以访问64KB,而用R0或者R1只可访问低256字节。

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

指令 指令说明 源操作数寻址方式 结果 MOV A, 40H 将内部RAM中40H内容传送到累加器A中 (A)← (40H) 再将A中内容传送给R0 (R0)← (A) 直接寻址 (A)=48H MOV R0, A MOV #0F0H 寄存器寻址 立即数寻址 (R0)=48H (P1)=0F0H P1, 将立即数0F0H送到P1口,即P1.4~P1.7位1,其余为0 (P1) ← 0F0H MOV @R0, 将30H中的内容,传放到30H 以R0单元内容为地址的单元中 ((R0)) ← (30H) MOV DPTR, 将立即数3848传送给#3848H DPTR数据指针 (dptr) ← 3848H MOV 38H MOV 30H 40H, 将内部RAM中38H内容传送到40H单元中 (40H) ← (38H) R0, 将30H中的内容给R0寄存器 (R0) ← (30H) 将R0的内容传送到P0 (P0) ← (R0) 直接寻址 ((R0))=(48H)=38H 立即数寻址 (DPTR)=3848H 直接寻址 (40H)=40H 直接寻址 (R0)=38H MOV P0, R0 寄存器寻址 寄存器间接寻址 (P0)=38H (A)=40H MOV A, @R0 将R0内容为地址的该单元内容传送给A (A)←((R0)) MOV P2, P1 将P1的内容传送给P2 (P2) ← (P1) 直接寻址 (P2)=0F0H

6. 指出下列指令的源操作数的寻址方式 MOV A, 65H 直接寻址 MOV A, #65H 立即数寻址 MOV A, @R0 寄存器间接寻址 MOV A, R2 寄存器寻址 MOVC A, @A+PC 变址寻址

7. 内部RAM和特殊功能寄存器各用什么寻址方式?

答:内部RAM有寄存器寻址方式、直接寻址方式和间接寻址方式; 特殊功能寄存器除A外只能进行直接寻址。

8. 已知:(A)=5BH,(R1)=30H,(30H)=0CEH,(P1)=71H,(PSW)=80H,(PC)=2000H,(205CH)=46H,(SP)=30H,(B)=78H。分别求各条指令执行后的结果(要求进行二进制运算验证)及标志位Cy、P的影响。

(1)MOV A, @R1 (A)=0CEH P=1, C不变 (2)MOV 40H, 30H (40H)=0CEH P和C不变 (3)MOV P1, R1 (P1)=30H P和C不变 (4)MOVC A, @A+PC (A)=46H P=1, C不变

(5)PUSH B (31H)=78H,(SP)=31H P和C不变 (6)POP DPH (DPH)=0CEH,(SP)=29H P和C不变 (7)XCHD A, @R1 (A)=05EH,(30H)=CBH P=1, C不变 (8)ADD A, 30H (A)=29H P=1, C=1 (9)ADDC A, P1 (A)=CDH P=1, C=0 (10)SUBB A, P1 (A)=E9H P=1, C=1 (11)ANL P1, #0FH (P1)=01H P和C不变 (12)CLR PSW.7 C=0

(13)RLC A (A)=B7H P=0, C=0 (14)ORL C, 90H C=1, P不变

9. 对下面一段程序加上机器码和注释,并说明程序运行后寄存器A、R0和内部RAM 50H、51H、52H单元的内容。

MOV 50H,#50H 75 50 50 ;(50H)←50H MOV A,50H E5 50 ;(A)←(50H) MOV R0,A F8 ;(R0)←(A)

MOV A,#30H 74 30 ;(A)←30H MOV @R0,A F6 ;((R0))←(A) MOV A,#50H 74 50 ;(A)←50H MOV 51H,A F5 51 ;(51H)←(A) MOV 52H,#00H 75 52 00 ;(52H)←00H 答:运行后寄存器(A)=50H,(R0)=50H,(50H)=30H,(51)=50H,(52H)=00H

10. 区别下列各指令中20H的含义,在每条指令后加上注释。

MOV A , #20H 将20H立即数传送给A

MOV 45H, 20H 将内部RAM中20H单元的内容传送到45H中

MOV C, 20H.0 将内部RAM中20H单元内容的第0位(最低位)传送给C MOV C, 20H 将内部RAM中20H位地址内容传送给C

11. 写出完成以下功能的指令 (1) 将立即数30H送到R1;

(2) 将内RAM30H中的数据送到内RAM78H单元;

(3) 将立即数30H送到 以R0中内容为地址的存储器中; (4) 将R2中的内容送到 P1;

(5) 将内RAM60H单元的数据送到 外RAM60H单元;

(6) 将内RAM60H单元的数据送到外RAM1060H单元; (7) 将ROM1000H单元的内容送到内RAM30H单元; (8) 使ACC.7置位;

(9) 使累加器的低4位清零;

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4