单片微型计算机原理与接口技术 髙锋 课后答案第3章
更新时间:2023-07-18 18:12:01 阅读量: 实用文档 文档下载
很难找到
第3章 【单片机的指令系统】
思考与练习题解析
【3—1】什么是指令及指令系统?
【答】控制单片机进行某种操作的命令称为“指令”。单片机就是根据指令来指挥和控制
单片机各部分协调工作。指令由二进制代码表示,指令通常包括操作码和操作数两部分:操作码规定操作的类型,操作数给出参加操作的数或存放数的地址。
所有指令的集合称为“指令系统”。80C51单片机的指令系统专用于80C51系列单片机, 是一个具有255种操作码(OOH~FFH,除A5H外)的集合。
【3—2】80C51单片机的指令系统具有哪些特点?
【答】80C51单片机的指令系统容易理解和阅读。只要熟记代表33种功能的42种助记即可。有的功能如数据传送,可以有几种助记符,如MOV、MOVc、MOVX。而指令功能助
记符与操作数各种寻址方式的结合,共构造出111种指令,而同一种指令所对应的操作码可以多至8种(如指令中Rn对应寄存器R0~R7)。
80C51单片机的指令系统具有较强的控制操作类指令,容易实现“面向控制”的功能;具有位操作类指令,有较强的布尔变量处理能力。
【3—3】简述80C51指令的分类和格式。
【答】80C51的指令系统共有111条指令,按其功能可分为5大类:数据传送类指令(28条)、算术运算类指令(24条)、逻辑运算类指令(25条)、控制转移类指令(17条)和布尔操作(位)类指令(17条)。 指令的表示方法称之为“指令格式”,其内容包括指令的长度和指令内部信息的安排等。在80C51系列的指令系统中,有单字节、双字节和三字节等不同长度的指令。
·单字节指令:指令只有一个字节,操作码和操作数同在一个字节中。
·双字节指令:包括两个字节。其中一个字节为操作码,另一个字节是操作数。
·三字节指令:操作码占一个字节,操作数占两个字节。其中操作数既可能是数据,也可能是地址。
【3—4】简述80C51的指令寻址方式,并举例说明。
【答】执行任何一条指令都需要使用操作数,寻址方式就是在指令中给出的寻找操作数或操作数所在地址的方法。
80C5l系列单片机的指令系统中共有以下7种寻址方式。
①立即寻址。在指令中直接给出操作数。出现在指令中的操作数称为“立即数”,为了与直接寻址指令中的直接地址相区别,在立即数前面必须加上前缀“#”。
例如:MOV DPTR,#1234H ;1234H为立即数,直接送DPTR
②直接寻址。在指令中直接给出操作数单元的地址。
例如: MOV A,55H ;55H是操作数单元的地址,55H单元内的数据才是操作数,取出后送累加器A
③寄存器寻址。在指令中将指定寄存器的内容作为操作数。因此,指定了寄存器就能得 到操作数。寄存器寻址方式中,用符号名称来表示寄存器。
例如: INC R7 ;R7的内容为操作数,加1后再送回R7
④寄存器间接寻址。在指令中给出的寄存器内容是操作数的地址,从该地址中取出的才 是操作数。可以看出,在寄存器寻址方式中,寄存器中存放的是操作数;而在寄存器间接寻址 方式中,寄存器中存放的则是操作数的地址。
寄存器间接寻址须以寄存器符号名称的形式表示。为了区别寄存器寻址和寄存器间接寻 址,在寄存器间接寻址中,应在寄存器的名称前面加前缀“@”。
例如: ORL A.@Ro; 当R0寄存器的内容是60H时,该指令功能是以RO寄存器的内容60H为地址,将60H地址单元的内容与累加器A中的数相“或”,其结果仍存放在A中。
很难找到
⑤相对寻址。在指令中给出的操作数为程序转移的偏移量。相对寻址方式是为实现程序的相对转移而设立的,为相对转移指令所采用。
在相对转移指令中,给出地址偏移量(在80C51系列单片机的指令系统中,以“rel”表示,为8位带符号数),把PC的当前值加上偏移量就构成了程序转移的目的地址。而PC的当前值是指执行完转移指令后的PC值,即转移指令的PC值加上转移指令的字节数。转移的目的地址可用如下公式表示:
目的地址=(转移指令所在地址+转移指令字节数)+rel
例如:SJMP 80H ;80H为程序转移的偏移量,即一128。当前PC值减去128后即为转移地址
⑥变址寻址。以DPTR或PC作基址寄存器,累加器A作变址寄存器,以两者内容相加形成的16位程序存储器地址作为操作数地址。又称“基址寄存器+变址寄存器间接寻址”。变址寻址方式只能对程序存储器进行寻址。
例如: MOVC A,@A+DPTR ;功能是把DPTR和A的内容相加,所得到的程序存储器地址单元的内容送A
⑦位寻址。80C51系列单片机有位处理功能,可以对数据位进行操作,因此,就有相应的位寻址方式。位寻址的寻址范围:
●片内RAM中的位寻址区。
·可位寻址的特殊功能寄存器位。
例如:MOV c,80H ;功能是把位寻址区的80H位(即P0.0)状态送累加位C
【3—5】访问特殊功能寄存器SFR,可使用哪些寻址方式?
【答】访问特殊功能寄存器SFR的惟一寻址方式是直接寻址方式。这时除了可以单元地址形式(如90H)给出外,还可以寄存器符号形式(如P1)给出。虽然特殊功能寄存器可以使用寄存器符号标志,但在指令代码中还是按地址进行编码的。
【3—6】若访问外部RAM单元,可使用哪些寻址方式?
【答】访问外部RAM单元的惟一寻址方式是寄存器间接寻址方式。片外RAM的64 KB单元,使用DPTR作为间址寄存器,其形式为@DPTR,例如“MOVX A,@DPTR”的功能是把DPTR指定的片外RAM单元的内容送累加器A。
片外RAM低256个单元,除了可使用DPTR作为间址寄存器外,也可使用:R0或R1作间址寄存器。例如“MOVX A,@R0'’即把R0指定的片外RAM单元的内容送累加器A。
【3—7】若访问内部RAM单元,可使用哪些寻址方式?
【答】片内RAM的低128单元可以使用寄存器间接寻址方式,但只能采用R0或R1为间址寄存器,其形式为@Ri(i=0,1)。
片内RAM的低128单元可以使用直接寻址方式,在指令中直接以单元地址形式给出。
片内RAM的低128单元中的20H~2FH有128个可寻址位,还可以使用位寻址方式,对这128个位的寻址使用直接位地址表示。
【3—8】若访问程序存储器,可使用哪些寻址方式?
【答】访问程序存储器可使用的寻址方式有立即寻址方式、变址寻址方式和相对寻址方式三种。立即寻址是指在指令中直接给出操作数。变址寻址方式只能对程序存储器进行寻址,或者说这是专门针对程序存储器的寻址方式。相对寻址方式是为实现程序的相对转移而设立的。这三种寻址方式所得到的操作数或操作数地址都在程序存储器中。
【3—9】MOV、MOVC、MOⅥ(指令有什么区别?分别用于哪些场合?为什么?
【答】MOV指令用于对内部RAM的访问。MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。MOVX指令采用间接寻址方式访问外部数据存储器.有Ri和DPTR两种间接寻址方式。执行MOVX指令时,在P3.7引脚上输出RD有效信号.或在P3.6引脚上输出
很难找到
WR有效信号,可以用做外部数据存储器或I/O的读/写选通信号,与单片机扩展电路有关。
【3—10】说明“DA A”指令功能,并说明二一十进制调整的原理和方法。
【答】“DA A”指令的功能是对两个BCD码的加法结果进行调整。两个压缩型BCD码按二进制数相加之后,必须经过该指令的调整才能得到压缩型BCD码的和数。“DA A”指令对两个BCD码的减法结果不能进行调整。
BCD码采用4位二进制数编码,并且只采用了其中的10个编码,即0000~1001,分别代表BCD码0~9,而10lO~1111为无效码。当两个BCD码相加结果大于9时,说明已进入无效编码区;当两个BCD码相加结果有进位时,说明已跳过无效编码区。若结果进入或跳过无效编码区,则结果是错误的,相加结果均比正确结果小6(差6个无效编码)。
十进制调整的修正方法为:当累加器低4位大于9或半进位标志AC=1时,进行低4位加6修正;当累加器高4位大于9或进位标志CY=l时,进行高4位加6修正。
【3一11】说明80C51单片机的布尔处理机的构造及功能。
【答】80C51单片机内部有一个布尔(位)处理机,具有较强的布尔变量处理能力。布尔处理机实际上是一位微处理机,它包括硬件和软件。布尔处理机以进位标志CY作为位累加器,以80C51单片机内部RAM的20H~2FH单元及部分特殊功能寄存器为位存储器,以80C51单片机的PO、P1、P2和P3为位I/O。
对位地址空间具有丰富的位操作指令,包括布尔传送指令、布尔状态控制指令、位逻辑操作指令及位条件转移指令,为单片机的控制带来很大方便。
【3—12】试分析以下程序段的执行结果。
MOV SP,#60H
MOV A,#88H
MOV B,#OFFH
PUSH ACC
PUSH B
POP ACC
POP B
【答】结果如下:
MOV SP,#60tt ;(SP)=60H
NOV A,#88tt ;(A)=88H
MOV B.#0FFH ;(B)=FFH
PUSH ACC ;(SP)=61H,(61H)=88H
PUSH B ;(SP)=62H,(62H)=FFH
POP ACC ;(A)=FFH,(SP)=61H
POP B ;(B)=88H,(SP)=60H
程序段的执行结果:累加器A和寄存器B的内容通过堆栈进行了交换。
注意:80C51单片机的堆栈是按照先进后出的原则进行管理的。
【3-1】已知(A)=7AH,(RO)=30H,(30H)=A5 H,(PSW)=80H。请填写各条指令单独执行后的结果。
(1) XCH A,R0
(2) XCH A,30tt
(3) XCH A,@R0
(4) XCHD A,@R0
(5) SWAP A
(6) ADD A,R0
(7) ADD A,30H
很难找到
(8) ADD A,#30H
(9) ADDC A,30H
(10) SUBB A,30H
(11) SUBB A,#30H
【答】结果如下:
(1) XCH A,R0 ;(A)=30H,(R0):7AH
(2) XCH A,30H ;(A)=A5H,(30H)=7AH,(PSW)=81H
(3) XCH A,@R0 ;(A)=R5H,(30H)=7AH,(PSW)=81H
(4) XCHD A,@R0 ;(A)=75H,(30H)=AAH,(PSW)=81H
(5) SWAP A ;(A)=A7H
(6) ADD A,R0 ;(A)=AAH,(PSW)=04H
(7) ADD A,30H ;(A)=1FH,(PSW)=81H
(8) ADD A,#30H ;(A)=AAH,(PSW)=04H
(9) ADDC A,30H ;(A)=20H,(PSW)=01H
(10) SUBB A,30H ;(A)=D4H,(PSW)=84H
(11) SUBB A,#30H ;(A)=49H,(PSW)=01H
【3—14】已知(30H)=40H,(40H)=10 H,(10H)=00H,(P1)=CAH,请写出执行以下程序段后有关单元的内容。
MOV R0,#30H
MOV A,@R0 .
MOV R1,A
MOV B,@R1
MOV @R1,P1
MOV A,@R0
MOV IOH,#20H
MOV 30H,10H
【答】有关单元的内容如下:
MOV R0,#30H ;(RO)=30H
MOV A,@R0 ;(A)=40H
MOV Rl,A ;(R1)=40H
MOV B,@R1 ;(B)=1OH
MOV @R1,P1 ;(40H)=CAH
MOV A,@RO ;(A)=40H
MOV 10H,#20H ;(10H)=20H
MOV 30H,10H ;(30H)=20H
执行以上程序段后,有关单元的内容分别为:(30H)=20H,(40H)=CAH,(10H)=20H,(P1)=CAH。
【3-15】已知(R1)=20 H,(20 H)=AAH,请写出执行完下列程序段后A的内容。
MOV A,#55H
ANL A,#0FFH
0RL 20H,A
XRL A,@R1
CPL A
【答】各指令的执行结果如下:
MOV A,#55H ;(A)=55H
很难找到
ANL A,#0FFH ;(A)=55H
ORL 20H,A ;(20H)=FFH
XRL A,@R1 ;(A)=AAH
CPL A ;(A)=55H
执行完程序段后,A的内容为5 5 H。
【3—16]设内部数据存储器30 H、31 H单元中连续存放有4位BCD码数符,试编程序把4位BCD码数符倒序排列。请对源程序加以注释。
a3 a2 al a0 a0 al a2 a3
【答】源程序如下:
MOV R0,#30H
MOV R1,#31H
MOV A,@R0 ;30H单元内容送A
SWAP A ;A的高4位与低4位交换(a2与a3)
MOV @R0,A
MOV A,@R1 ;31H单元内容送A
SWAP A ;A的高4位与低4位交换(a0与a1)
XCH A,@R0 ;30H与31H单元内容交换
MOV @R1,A ,
HERE:SJMP HERE
【3-17】设(A)=C3 H,(RO)=AAH。分析指令“ADD A,R0"的执行结果。
【答】 1 1 0 0 0 0 1 1 B
+ 1 0 1 0 1 0 1 0 B
C=1 0 1 1 0 1 1 0 1 B
执行结果:(A)=6DH,(CY)=1,(OV)=1,(AC)=O。PSW=10XXXIXl。
分析:第6位无进位而第7位有进位,故溢出标志OV=1。对于两个带符号数相加,OV=1即表示出现两个负数相加,结果为正数的错误;对于两个无符号数相加,不必考虑OV值。
第7位有进位,故进位标志C=1。对于两个无符号数相加,C=1即表示相加后有正常溢出,可用于多字节无符号数相加。对于两个带符号数相加,不必考虑C值。
【3-l8】阅读下列程序,说明其功能。
MOV R0,#30H
MOV A, @R0
RL A
MOV RI,A
RL A
RL A
ADD A.Rl
MOV @R0,A
【答】对程序注释如下:
MOV R0,#30H ;(RO)=30H
M0V A,@R0 ;取数
RL A ;(A)×2
MOV R1,A
很难找到
RL A ;(A)x 4
RL A ;(A)×8
ADD A,R1 ;(A)X i0
MOV @R0,A ;存数
功能:将30 H中的数乘以10以后再存回30H中。
条件:30 H中的数不能大于25,25×10=250仍为一个字节。若30H中的数大于25,则应考虑进位。
【3—19】已知两个十进制数分别在内部RAM中的40 H单元和50H单元开始存放(低位在前),其字节长度存放在内部RAM的30 H单元中。编程实现两个十进制数求和,求和结果存放在40 H开始的单元中。
【答】程序如下:
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:
MOV R0,#40H ;被加数首址.又作两个十进制数和的首址
MOV R1,#50H ;加数首址
MOV R2,30H ;字节长度
CLR C
PP: MOV A,@R1 ;取加数
ADDC A,@R0 ;带进位加
DA A ;二一十进制数调整
MOV @R0,A ;存和
INC R0 ;修正地址
INC R1
DJNZ R2,PP ;多字节循环加
AJMP $
END
【3—20】编程实现把外部RAM中从8000 H开始的100个字节数据传送到 8100开始的单元中。
【答】程序如下:
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:MOV DPTR,#8000H ;字节数据源首地址
MOV R1,#100 ;字节数据计数器
MOV R2,#01H
MOV R3,#00H
PP: MOVX A,@DPTR ;读数据
MOV R4,A ;保存读出数据
CLR C
MOV A,DPL ;计算得到字节数据目的地址
ADD A,R3
MOV DPL,A
MOV A,DPH
很难找到
ADDC A,R2
MOV DPH,A
MOV A,R4 ;恢复读出数据
MOVX @DPTR,A ;写数据至目的地址
CLR C ;恢复源数据地址 .
MOV A,DPL
SUBB A,R3
MOV DPL,A
MOV A,DPH
SUBB A,R2
MOV DPH,A
INC DPTR ;地址加1
DJNZ R1,PP ;是否传送完?
SJMP $
注意:字节数据源地址和目的地址都在外部RAM中,地址指针都为DPTR,所以要注意DPTR地址指针的保护和恢复。地址的保护和恢复的方法有多种,如通过堆栈或寄存器。
【3-2 1】读下列程序,请:
① 写出程序功能,并以图示意。
② 对源程序加以注释。
ORG 0000H
MAIN:MOV DPTR,#TAB
MOV R1,#06H
LP: CLR A
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY O.5 s .
、INC DPTR
DJNZ R1,LP
AJMP MAIN’
TAB:DB 01H,03H,02H,06H,04H,05H
DEL AY0.5 s: ······
RET
END
【答】 .
① 程序功能:将TAB表中的6个参数依次从P1口中输出(每次输出延时0.5 s),然后
重复输出。P1口输出波形如图3-1所示。这是步进电机三相六拍输出波形。
图3-l Pl口输出波形
很难找到
ORG 0000H
MAIN:MOV DPTR,#TAB ;P1输出参数表首地址
MOV R1,#06H ;P1输出参数有6个
L,P: CLR A
MOVC A,@A+DPTR ;查表输出
MOV P1,A
LCALL DELAY 0.5 s ;软件延时0.5 S
INC DPTR
DJNZ R1,LP ;输出参数已有6个 ?
AJMP MAIN ;输出参数已有6个,则重复输出
TAB:DB 01H,03H,02H,06H,04H,05H ;参数表
DELAY0.5 s: ;延时0.5 S子程序
RET
【3—22】读下列程序,然后 ① 画出P I.O~P1.3引脚上的波形图,并标出电压V一时间t坐标。 ② 对源程序加以注释。
ORG 0000H
START: MOV SP,#20H
MOV 30H,#01H
MOV P1,#01H
MLP0: ACALT, D50ms
M07 A,30H
CJNE A,#08H,MLPI
MOV A,#01H
MOV DPTR,#ITAB
MLP2: MOV 30H,A
MOVC A,@A+DPTR
MOV P1,A
SJMP Mr,p0
MLPl: INC A
SJMP MLP2
ITAB:DB 0,1,2,4,8 .
DB 8,4,2,1
D50ms: ······ .
【答】
① 程序功能:P1.O~P1.3引脚上的波形图如图3—2所示。
图3—2 P1.O~P1.3引脚上的波形图
很难找到
ORG 0000H
START: MOV SP,#20H
MOV 30H,#01H
MOV P1,#01H
MLP0: ACALL ,D50ms ;软件延时50 ms
MOV A,30H
CJNE A,#08H,MLPI ;判断表格中数据是否取完? MOV A,#01H ;取完,从表头开始取
MOV DPTR,#ITAB ;表格首地址
MLP2: MOV 30H,A
MOVC A,@A+DPTR ;取表格中数据
MOV P1,A
SJMP MLP0
MLPI: INC A ;表格中数据未取完,准备取下一个 SJMP MLP2
ITAB:DB 0,1,2,4,8 ;表
DB 8,4,2,1
D50ms: ;软件延时50 ms子程序
RET
正在阅读:
单片微型计算机原理与接口技术 髙锋 课后答案第3章07-18
社区矫正人员月度小结及书面思想汇报登记表08-09
漳州市2013年继续教育公共课《专业技术人员信息化能力建设1》考04-10
线性代数期末复习卷106-13
城镇建设开发有限公司2021年上半年工作总结及下半年工作计划08-16
正反比例关于雍阳的试题01-07
描写雷电的成语02-26
基于尺寸链图形理论的公差计算方法06-04
李丰的黄金K线理论10-23
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 微型计算机
- 单片
- 课后
- 接口
- 原理
- 答案
- 技术
- “两票三制”管理制度
- 2009年高考江苏语文试题分析
- 个案社会工作报告
- 2011年监理工程师建设工程合同管理真题及答案
- 与日本人交往中的礼仪
- 上海市中级口译笔试试题与详细答案解析(2007年3月)(春季)(2009年3月)(春季)
- 电气设备采购与安装工程
- 山东省潍坊市2015-2016学年高二数学下学期阶段性教学质量监测(期中)试题 理
- 2015山东公务员考试题高分预测试卷&183;申论(A类)
- 船舶操纵与避碰试题A(操纵部分,含答案)
- (讲义一)室内覆盖系统
- 普通化学期末复习知识点
- 无线通信技术及移动互联网应用介绍
- 进场施工安全协议
- 必修2教案2.3.1直线与平面垂直的判定
- 弯沉记录自动计算表
- 自费出国留学中介服务机构名单
- 2021届高考历史复习第14讲当今世界文明的冲突与融合-第二次世界大战后的世界学案
- 电气设备安装工程
- 回忆点点滴滴的日子 渴望自己的一片天空