单片机原理与应用练习题3答案
更新时间:2024-01-07 14:17:01 阅读量: 教育文库 文档下载
练习题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位清零;
(10) 使P1.2与CY相与,结果送CY;
(11) 立即数45H、93H进行逻辑与、或、异或操作;
(12) 两立即数求和:1C0H+45H,结果按高低8位存在30H、31H中。
答案:(1)MOV R1,#30H (2) MOV 78H, 30H
(3)MOV @R0, #30H (4)MOV P1, R2 (5) MOV A,60H;; MOV P2,#0; MOV R0,#60H; MOVX @R0,A
(6) MOV A,60H;; MOV DPTR,#1060;
MOVX @DPTR,A
(7) MOV A, #00H
MOV DPTR,#1000H MOVC A, @A+DPTR
MOV 30H,A (8)SETB ACC.7
(9) ANL A, #0F0H (10) ANL C, p1.2
(11) 与: MOV A,#45H ANL A,#59H 或: MOV A,#45H ORL A,#59H
异或:PMOV A,#45H XRL A,#59H (12) CLR C
MOV R2,#1
MOV A,#0C0H ADD A,#45H MOV 31H,A MOV A,R2 ADDC A,#0 MOV 30H,A
12. 写出下列指令执行过程中堆栈的变化 设堆栈初值为X:
MOV R6, #11H (SP)=X(堆栈不变) MOV R7, #23H (SP)=X(堆栈不变) ACALL 200H (SP)=X+2 ;(X+1)=第4条指令的首址PC低8位 (X+2)=第4条指令的首址PC高8位 POP 50H (SP)=X-1 POP 51H (SP)=X-2
SJMP $ ORG 200H RET
答:执行过程中,前面两条为立即寻址指令,堆栈不变;执行第三条ACALL指令时,首先将程序寄存器PC的当前值加2,接着先后将PC的低八位和高八位分别进栈,(SP)= (SP)+2;然后再将PC内容中的低11位用200H来替代,同时程序跳到第七条ORG200H中,接着RET表示子程序返回,将原先压入堆栈的PC值弹出,(SP) =(SP)-2;最后两条POP指令执行后将SP所指地址中的内容赋给50H,SP减1后再将SP所指地址中的内容赋给51H,SP内容再减1给SP,最后程序结束。
13. 请写出能实现下列功能的程序段:
(1)一个16位数据,高低字节分别放在20H和21H中,试将该数乘以2
MOV A, 21H
CLR C RRC A
MOV 21H, A MOV A, 20H RRC A
MOV 20H, A
(2)16位二进制数由高位到低位放在30H和31H单元,将其内容加1;
MOV A, 31H ADD A, #01H
MOV 31H, A MOV A, 30H ADDC A, #00H MOV 30H, A
(3)将DPTR中的数据减5;
CLR C
MOV A, DPL SUBB A, #05H MOV DPL, A MOV A, DPH SUBB A, #00H MOV DPh, A
(4)有3个位变量X,Y,Z,请编写程序实现Y=X+YZ的逻辑关系式。
X BIT 30H Y BIT 31H Z BIT 32H MOV C,Y ANL C,Z
MOV 20H,C MOV C,X ORL C,20H MOV Y, C
14. 将一个按高低字节存放在21H、20H中的一个双字节乘以2后,再按高低次序将结果存放到22H、21H、20H单元 ORG 0
STAR: CLR C
MOV 20H,#0E2H ;设低字节的数据 是E2H MOV 21H,#0F3H ;设高字节的数据是F3H MOV A, 20H MOV B,#2H MUL AB MOV 20H,A MOV 23H,B MOV A,21H MOV B,#2H MUL AB ADDC A,23H MOV 21H,A MOV 22H,B SJMP $ END
15.试编程,将片外RAM 1000H~1050H单元的内容置为55H。
MOV P2,#10H MOV R0,#00H MOV A,#55H MOVX @R0,A MOV R0,#50H L0: MOVX @R0,A DJNZ R0,L0 SJMP $ END
16. 试编程统计数据区长度的程序,设数据区从片内RAM 30H单元开始,该数据区以0结束,统计结果放入2FH中。
MOV R0,#30H L0: MOV A,@R0 JZ L1 INC R1 INC R0
SJMP L0
L1:MOV 2FH, R1
17. 试编写程序,将片外RAM 2000H~200FH数据区中的数据由大到小排列起来。
ORG 0
L0: MOV P2,#20H MOV R0,#00H MOV R7,#0FH CLR F0
LOOP: MOVX A,@R0 MOV 31H,A INC R0
MOVX A,@R0 CLR C
CJNE A,31H,L1 L1: JC L2 DEC R0
MOVX @R0,A MOV A,31H INC R0
MOVX @R0,A SETB F0
L2: DJNZ R7,LOOP JB F0,L0 SJMP $ END
18. 若晶振频率位6MHZ,试计算下面延时子程序的延时时间 DELAY: MOV R7, #0F6H ;1个机器周期 LP: MOV R6, #0FAH ;1个机器周期 DJNZ R6, $ ;2个机器周期 DJNZ R7, LP ;2个机器周期 RET ;2个机器周期
答: 机器周期为2us,则有:[1+(1+2×250+2)×246+2]×2 us =247482 us
19. 试分别编写延时20ms和1s的程序 设晶振频率为12M
20ms: ORG 0
MOV R1,#102 L1: MOV R0,#48 L2: NOP NOP
DJNZ R0,L2 NOP
DJNZ R1,L1
NOP NOP NOP NOP NOP NOP NOP END
1s:----------------------------------------------
ORG 0
MOV R2,#50
L0: MOV R1,#100 L1: MOV R0,#49 L2: NOP NOP
DJNZ R0,L2 NOP
DJNZ R1,L1
DJNZ R2,L0 SJMP $ END
20. 试编写利用调用子程序的方法延时1min的程序。
ORG 0H MOV R2,#60
A0: LCALL DLY DJNZ R2,A0
SJMP $
DLY:MOV R2,#50 L0: MOV R1,#100 L1: MOV R0,#49 L2: NOP NOP
DJNZ R0,L2 NOP
DJNZ R1,L1
DJNZ R2,L0 RET END
21. 用查表程序求0~6之间的整数的立方。已知整数存在A中,查表结果存入片内RAM 31H中。
ORG 0
MOV A, #DATA
MOV DPTR,#TAB MOVC A, @A+DPTR MOV 30H,A SJMP $
TAB: DB 0,1,8,27,64,125,216 END
若立方数超过一个字节,在两个字节以内,由以下程序实现。 ORG 0000H MOV A,#5 RL A
MOV R0,A
MOV DPTR,#TAB MOVC A, @A+DPTR MOV 31H,A ;高位 MOV A,R0 INC A
MOVC A,@A+DPTR
MOV 30H,A ;低位 SJMP $
TAB: DW 0,1,8,27,64,125,216 END
22. 编写程序,查找在内部RAM的30H~50H单元中出现FFH的次数,并将查找结果存入51H单元。
MOV R1,#00H MOV R0,#30H MOV R2,#21H L0: MOV A,@R0
CJNE A,#0FFH,L1 INC R1 L1: INC R0
DJNZ R2,L0 MOV 51H,R1 SJMP $ END
23. 试用子程序求多项式:Y=(A+B)2+(B+C)2 (要求:两数之和不能超过16)
X EQU 30H ;X代表A Y EQU 31H ;Y代表B Z EQU 32H ;Z代表C
F EQU 33H ;F中存放计算结果Y MOV R1,X MOV R2,Y LCALL L0 MOV R3,A
MOV R1,Y MOV R2,Z LCALL L0 ADD A,R3 MOV F,A Sjmp $
L0: MOV A,R1 ADD A,R2 MOV B,A MUL AB RET end
24. 已知(60H)=33H,(61H)=43H,试写出程序的功能和运行结果。
ORG 0000h
SS: MOV R0,#61H MOV R1,#70H ACALL CRR SWAP A
MOV @R1,A DEC R0
ACALL CRR XCHD A,@R1 SJMP $
CRR: MOV A,@R0 CLR C
SUBB A,#30h
CJNE A,#0AH,NEQ AJMP BIG NEQ: JC CEN
BIG: SUBB A,#07H CEN: RET
该程序的运行结果是:(60H)=33H, (61H)=43H, (70H)=C3H
25. 内部RAM的30H单元开始存放着一组无符号数,其数目存放在21H单元中。试编写程序,求出这组无符号数中的最小的数,并将其存入20H单元中。
MOV R0,#30H MOV A,@R0 MOV 20H,A DEC 21H
LOOP: INC R0
MOV A,@R0 CJNE A,20H,L1
L1: JNC L2
MOV 20H,A L2: DJNZ 21H,LOOP SJMP $ END
26. 写程序实现散转功能:
(R2)=0 转向RR0 (R2)=1 转向RR1
(R2)=2 转向RR2
ORG 0
MOV R2,#2H ;设(R2)=2 MOV DPTR,#TAB MOV A,R2
MOVC A,@A+DPTR JMP @A+DPTR TAB: DB RR0-TAB DB RR1-TAB DB RR2-TAB
RR0: MOV A,#1 ;RR0:将立即数1赋给A SJMP ENDF
RR1: MOV A,#2 ;RR1:将立即数2赋给A SJMP ENDF
RR2: MOV A,#3 ;RR2:将立即数3赋给A SJMP ENDF ENDF: SJMP $
27. 试按子程序形式编程,将单字节二进制数高4位、低4位分别转换成两个字节的ASCII码。
MOV A,R0 ;将R0中的内容作为贝转换对象 ANL A,#0FH ;取低四位 MOV DPTR,#TAB MOVC A,@A+DPTR
MOV 20H,A ;低四位转换后存放于20H中 MOV A,R0
ANL A,#0F0H ;取高四位 SWAP A
MOVC A,@A+DPTR
MOV 21H,A ;高四位转换后存放于21H中 TAB: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H DB 41H,42H,43H,44H,45H,46H
正在阅读:
单片机原理与应用练习题3答案01-07
中小学音乐教师招聘考试试题及答案已打印04-16
现代化船舶概论501-02
新龟兔赛跑看图写话450字06-17
2017年春季安全教育工作计划12-22
人才工作小标题30例最新09-07
监狱远程教育管理平台项目11-05
国内外聚氯乙烯工业生产技术进展03-15
经济适用房申请书怎么写优秀7篇03-26
2014届高考英语一轮复习 课时作业(二) Unit2 English around the world 新人教版必修112-16
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 练习题
- 单片机
- 原理
- 答案
- 应用
- 《烙饼问题》教学案例分析及思考
- 湖南省醴陵市第七中学八年级数学上学期期末分式专项总复习无答案湘教版
- 《向量数乘运算及其几何意义》教学反思
- “汽车之家”商业模式的调研报告 - 图文
- 政府采购工程类合同
- 探索高校创新创业教育的课程建设
- 植物营养袋价格
- 星级酒店年度工作总结及工作计划
- 2012届高考数学一轮复习 8.2 双曲线教案
- 超市理货员个人简历
- 40米T梁安装方案
- 妇科热疗仪项目可行性研究报告(目录) - 图文
- 2015年注册咨询工程师《工程项目组织与管理》考前突破试卷
- 第20课三国鼎立导学案
- 高考英语一轮复习 短文改错练习7
- 2015公司年会主持词2篇
- 浅析仰韶文化 - 图文
- 《100所名校》山西大学附属中学2019届高三下学期3月模块诊断文综地理试卷 Word版含解析
- 管理学 - 原理与方法(第六版、周三多)练习题及答案
- 九级化学全册 第二章 身边的化学物质《我们身边物质》同步练习1 沪教版