ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:33.91KB ,
资源ID:6951800      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6951800.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第三章80C51单片机的指令系统.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第三章80C51单片机的指令系统.docx

1、第三章80C51单片机的指令系统第三章 80C51单片机的指令系统 31 80C51的指令系统具有哪些特点?答: 80C51的指令系统由111条指令组成。如果按字节数分类,有49条单字节指令、46条双字节指令和16条三字节指令,以单字节指令为主;如果按指令执行时间分类,有664条单周期指令、45条双周期指令和2条(乘、除)四周期指令,以单周期指令为主。 由此看来,80C51的指令系统具有存储效率高、执行速度快的特点。除此而外,指令系统还有如下特点: 可以进行直接地址到直接地址的数据传送,能把一个并行I/I口中的内容传送到内部 RAM单元中而不必经过累加器A或工作寄存器Rn。这样可以大大提高传送

2、速度和缓解累 加器A的瓶颈效应。 用变址寻址方式访问程序存储器中的表格,将程序存储器单元中的固定常数或表格字节内容传送到累加器A中。这为编程翻译算法提供了方便。 在算术运算指令中设有乘法(MUL)和除法(DIV)指令。 指令系统中,一些对I/O口进行操作的指令具有读一修改一写的功能。读一修改一写指令是指:在执行读锁存器的指令时,CPU首先完成将锁存器的值通过缓冲器BUF2读人内部,进行修改、改变,然后重新写到锁存器中去。这一特点是由I/O口的准双向特性所决定的。这种类型的指令包含所有的口的逻辑操作(ANL、ORL、XRL)和位操作(JBC、CPL、MOV、SETB、CLR等)指令。 80C51

3、单片机内部有一个布尔(位)处理器,对位地址空间具有丰富的位操作指令。布尔(位)操作类指令共有17条,其中包括布尔传送指令、布尔状态控制指令、布尔(位)逻辑操作指令及布尔(位)条件转移指令。32 简述 80C51的寻址方式和所涉及的寻址空间。答:寻址方式有下列七种。 立即寻址:指在指令中直接给出操作数。 直接寻址:指在指令中直接给出操作数单元的地址。 寄存器寻址:指令中将指定寄存器的内容作为操作数。 寄存器间接寻址:指令中要到寄存器的内容所指的地址去取操作数。 相对寻址:指令中给出的操作数为程序转移的偏移量。 变址寻址:以DPTR及PC作基址寄存器,累加器A作变址寄存器,以两者内容相加形成的16

4、位程序存储器地址作为操作数地址。 位寻址:对数据位进行操作。 各寻址方式所涉及的寻址空间如题表3-1所列。题表 3-1 寻址方式及寻址空间33 访问特殊功能寄存器和外部数据存储器,应采用哪种寻址方式?答访问特殊功能寄存器,应采用直接寻址、位寻址;访问外部数据存储器,应采用寄存器间接寻址。 在0255B范围内,可用寄存器R0、Rl间接寻址:MOVX A,R0 或 MOVX A,R1MOVX R0,A 或 MOVX R1,A在064KB范围内,用16位寄存器DPTR间接寻址MOVX A,DPTRMOVX DPTR,A34 为什么说80C51的传送指令极为丰富?为什么在某些传送中要旁路累加器A?答:

5、(1)80C51的传送指令极为丰富80C51具有丰富的数据传送指令,能实现多种数据的传送操作。数据传送指令共有29条,占总指令数的25%还多。数据传送指令按功能可分为:一般传送指令15条,目的地址传送指令1条,累加器传送指令11条和栈操作指令2条。(2)传送中可以旁路累加器A可以进行直接地址到直接地址的数据传送,能把一个并行I/O口中的内容传送到内部RAM单元中而不必经过累加器A,这称为旁路累加器A。这样,不仅可以大大提高数据传送的速度,而且能缓解累加器A的瓶颈效应。35 对80C51片内RAM的128255字节区的地址空间寻址时应注意些什么?对特殊功 能寄存器应采用何种寻址方式进行访问?答:

6、在片内RAM的128255字节区的地址空间寻址时应注意: 只有80C52中有这部分地址空间; 在这部分地址空间,只有间接寻址方式有效,即 MOV Ri,A ;i=0,1 MOV A,Rj ;i=0,1对特殊功能寄存器可有两种寻址方式:直接寻址; 对其地址的末尾为0和8的寄存器可进行位寻址。3。6 在 80C51的片内RAM中,己知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。分析下面各条指令,说明源操作数的寻址方式,按顺存执行各条指令后的结果。答: 指 令 源操作数的寻址方式 执行指令后的结果MOV A,40H 直接寻址 (A)=48HMOV R0,A 寄存器

7、寻址 (R0)=48HMOV P1,#0F0H 立即寻址 (Pl)=0F0HMOV R0,30H 寄存器间接寻址 因(R0)=48H.(30H)=Ft8H所以(48H)=38HMOV DPTR,#3848H 立即寻址 (DPTR)=3848HMOV 40H,38H 直接寻址 (40H)=40HMOV R0,30H 直接寻址 (R0)=38HMOV D0H,R0 直接寻址 (D0H)=38HMOV 18H,#30H 立即寻址 (18H)=30HMOV A,R0 寄存器间接寻址 因(R0)=30H.(30H)=38H所以(A)=38HMOV P2,P1 寄存器寻址 (P2)=0F0H 37 设计一

8、段程序,其功能是:将寄存器7的内容移到R6中。答:按题意程序设计如下:MOV A, R7MOV R6, A38 现需将外部数据存储器200DH单元中的内容传送到280DH单元中,请设计程序。答:按题意程序设计如下: MOV DPTR,#200DH MOVX A,DPTR MOV DPTR,#280DHMOVX DPTR,A39 已知当前PC(程存计数器)值10l0H,请用两种方法将程序存储器l0FFH中的常数送入累加器A。答:按题意有如下两种程序设计方法。 方法一:MOV A, #0EFHMOVC A, A+PC方法二:MOV DPTR, #l0FFHMOV A, #0MOVC A, A+DP

9、TR3.10 在进行单字节减法运算时,应注意什么?答:在80C51指令系统中没有不带借位的减法,如果需要的话,应在SUBB指令前,用“CLR,C”指令将CY清零。3.11 已知累加器A中存放两位BCD吗教,请编写程序其现十进制数减1。:按题意编写的程序如下: MOV B,A ;保存A ANL A,#0FH ;屏蔽A的高4位 CLR CY SUBB A,#1 CJNE A,#0FH,LP MOV A,B ANL A,#0F0H CLR CY SUBB A,#l0H ADD A,#9H RETLP: ANL B,#0F0HORL A,BRET 312 试编写程序,将片外数据存储器中20H单元中的内

10、容和21H单元的内容相乘,并将结果存放在22H和23H单元中,高位存放在高地址中。 答:按题意编写的程序如下MOV R0,#20H ;R0指向20HMOVX A,R0 ;取来被乘数,MOV B,A ;存入B寄存器MOV R0,#2lH ;R0指向2lH(或用INC R0)MOVX A,R0 ;取来乘数,人累加器AMUL AB ;得结果MOV R0,#22H ;R0指向22H(或用INC R0)MOVX R0,A ;结果低位在22单元中MOV R0,#23H ;R0指向23H(或用INC R0)MOV A,B ;结果高位在23单元中MOVX R0,A 3.13 已知延时程序为:DELAY: MO

11、V R2,#0FAHLI: MOV R3, #0FAHL2: DJNZ R3,L2 DJNZ R2,L1 RET若系统的晶振频率为6MHz,求该延时子程存的延时。答:因为晶振频率为6MHz,所以机器周期为2us,DJNZ:4us;MOV:4us;RET:4us。指令周期数 执行时间DELAY: MOV R2, # 0FAH 2 4usLI: MOV R3,#0FAH 2 4usL2: DJNZ R3,L2 2 4usDJNZ R2.L1 2 4usRET 2 4us 其中,0FAH=250。所以 ,总时间=4us十(2504us十4us) 250十4us= 251.008ms。314 请将片外

12、数据存储器地址为 40H 60H区域的数据块,全部搬移到片 内 RAM 内RAM的地址区域,并将原数据区全都填为FFH 。答:按题意编程如下: MOV R0,#40H ;指向数据区首地址MOVE_PRO: MOVX A,R0 ;取外部 RAM中数据(用 MOVX) MOV R0,A; 将数据存大片内RAM中(用 MOV) INC R0 ;指针加 1 CJNE R0,#61H,MOVE_PRO ;到数据区末地址了吗?没有,循环 MOV R0,#40H ;到了,继续,重新指向数据区首地址 MOV A,#0FFH ;用#0FFH填充原来数据区MOVE一PRO:MOVX R0,A INC R0 CJN

13、E R0,#61H,MOVE_PRO1 RET315 试编写子程序,使间址寄存器R0所指的连续两个片外数据存储器 RAM单元中的低4位二进制数,合并为一个字节,装入累加器A中。己知R0指向低地址,并要求该单元低4 位放在 A中的高4位。答:按题意编程如下: MOVX A,R0 ;取来数据 ANL A,#0FH ;屏蔽高 4位,保留低 4位 SWAP A ;高 4位与低 4位对调 MOV B,A ;保存在 B寄存器中 INC R0 ;指向下一个地址 MOVX A,R0 ;取来数据 ANL A,#0FH ;屏蔽高 4位,保留低 4位 ADD A,B ;合为一个数 3.16 双字节与单字节无符号相乘

14、,设被乘数存于41H、40H单元中,乘数存于R4中,乘积存于52H、51H 、50H单元中(前者为高位字节,后者为低位字节,顺序排列)。请编写此乘法程序段 。答:按题意编写的乘法程序段如下: (41H) (40H) (R4) (40H) (50H) (51H) +(52H) (52H) (40H)+(51H) (51H) (50H)MOV B,40H ;被乘数低位进B寄存器MOV A,R4 ;乘数进AMUL AB ;乘MOV 50H,A ;存积的低8位MOV 40H,B ;暂存积的高8位人(40H)MOV B,41H ;被乘数高位进B寄存器MOV A,R4 ;乘数进AMUL AB ;乘MOV

15、5lH,A ;暂存积的低8位人(51H)MOV 52H,B ;存积的高8位MOV A,40H ;(40H)+(51H)(51H)CLR CADD A,5lHMOV 5lH,AMOV A,52H ;(52H)+(CY)(52H)ADDC A,#0MOV 52H,A317 试计算片内RAM区40H47H八个单元中数的算术平均值,结果存放在4AH中。答:按题意编程如下MOV R0,#40H ;指向数据区首地址MOV 4AH,#0 ;清和数4AH,4BH单元MOV 4BH,#0LOOP:CLR C ;清进位位MOV A,R0 ;取数据ADD A,4AH ;求和MOV 4AH,A ;存回和数单元MOV

16、A,4BHADDC A,#0 MOV 4BH, AINC R0CJNZ R0,#48 H, LOOPMOV R2,#3 ;右移三次,相当于除8ACALL RR_LOOPRET;双字节(4BH,4AH)右移子程序;右移的次数在R2中;RR_LOOP: CLR C ;清进位位 MOV A,4BH RRC A MOV 4BH,A MOV A,4AH RRC A MOV 4AH,A DJNZ R2,RR_LOOP RET 318 设有两个长度均为15的数组,分别存放在0200H和0500H为首地址的片外数据存储器区域中,试编写求其对应项之和的程序,结果存放在以0300H为首地址的片外数据存储器区城中。

17、答:按题意编程如下MOV R0,#02H ;设置片外RAM的首地址的高位;字节MOV Rl,#05HMOV R2,#03HMOV R3,#00H ;设置片外RAM的首地址的低位;字节MOV A,#0 MOV B,#0COM_SUM: ;求和程序 MOV DPL, R3 ;取出地址为02XXH和05XXH中的;内容,相加 MOV DPH,R0MOVX A,DPTRMOV B,AMOV DPH,RlMOVX A,DPTRADD A,B MOV DPH, R2 ;相加结果存于03XXH中MOVX DPTR, AINC R3 ;片外RAM的低位地址加1CJNE R3,#U5, COM_SUM ;判断是

18、否完成,否则继续RET319 在起始地址为2100H,长度为64的数表中找出ASCII码F,将其送到1000H单元中去。答:按题意编程如下: MOV DPTR,#2100H ;设置起始地址 MOV R0,#0 ;设置当前所在地址SCH_PROO: MOV DPL,R0 ;设置当前地址 MOVX A,DPTR ;取出当前地址的内容 INC R0 ;地址指针加1 CJNE A,#46H,SCH_PROl ;判断当前地址内容是否为F MOV DPTR,#1000H ;是,则存储到1000H单元中 ;并结束 MOVX DPTR, A RETSCH_PRO1: CJNE R0, #64, SCH_PRO

19、0 ;判断当前是否己取完所有的;数,否则继续,是,则结束RET320 3000H为首地址的存储区域中,存放着14个由ASCII码表示的09之间的数。试编写程序,将它们转换成BCD吗,并以压缩BCD码的形式,存放在2000H2006H单元中。答:按题意编程如下: MOV DPTR,#3000H ;指向数据区首地址 MOV R2,#0 ;存数区地址的低字节BCD_LOOP: MOVX A,DPTR ;取数 ANL A,#0FH ;屏蔽高4位,保留低4位 SWAP A ;高4位与低4位对调 MOV B,A ;暂存 INC DPTR ;指向下一个数据 MOVX A,DPTR ;取数 ANL A,#0F

20、H ;屏蔽高4位,保留低4位 ADD A,B ;组合成压缩BCD码 PUSH DPL ;保存当前地址和BCD码 PUSH DPHPUSH ACC MOV A,R2MOV DPTR,#2000H ;存数区首地址ADD A,DPLMOV DPL,APOP ACCMOVX DPTR,APOP DPHPOP DPLINC R2INC DPTR CJNZ DPL, #14, BCD_LOOP RET 注意:09的ASCII码是30H39H.321 试编写一段程序,把0500H一0506H单元的压缩BCD码转换成ASCII码,存放在0500H为首地址的存储单元中。答:按题意编程如下 MOV DPTR, #

21、0500H ;指向数据区首地址 MOV R2, # 0 ;存放数据区地址的低字节ASCIL.LOOP: MOVX A, DPTR ;取数 MOV B,A ;暂存 ANL A.#0FH ;屏蔽高4位,保留低4位 ADD A,#30H ;组成ASCII码 PUSH ACC MOV A,R2 MOV DPTR, #0500H ;存数据区首地址 ADD A,DPL MOV DPL,A POP ACC MOVX DPTR, A MOV A,B SWAP A ;高4位与低4位对调 ANL A.#0FH ;屏蔽高4位,保留低4位 ADD A,#30H ;组成ASCII码 INC DPTR ;指向下一个数据

22、MOVX DPTR, A ;取数 INC DPTR INC R2 INC R2CJNZ R2,#14, ASCII_LOOPRET322 请设计一段能准确地读出运行的定时器中计教值的程序。答:按题意编程如下ORG 000BHAJMP IT0P.ORG 100 HSTART:MOV SP,#60H ;设栈指针ACALL PTOM3 ;调定时器初始化程序.MOV A,TL0 先读TL0MOV 30H,A ;存人30H单元MOV A,TH0 ;再读TH0MOV 31H,A ;存人31H单元 . .PTOM3:MOV TMOD,#01H ;定时器初始化,设T0为方式1MOV TL0,#0MOV TH0

23、,#0SETB R0 ;定时开始SETB ET0 ;开中断SETB EARET.ITOP: MOV TL0,#6H ;TL0定时器中断程序 RETI 323 请用位操作指令,求下列逻辑方程(注意:原书的题目有错漏,这里己改正)。答:用位操作指令,求解逻辑方程如下(1) P1. 7 = ACC. 0 * ( B. 0 + P2. 0 ) + P3. 0MOV C,B0ORL C,P2.0ANL C,ACC.0ORL C,/P3.0MOV Pl.7,C(2) PSW. 5 = P1. 0 * ACC. 2+ B. 6 * P1. 4 MOV C,Pl.0ANL C,/ACC.2ORL C,B. 6

24、ANL C,/P1.4MOV PSW.5,C(3) PSW5= P1.7* B4十 C 十 ACC7* Pl.0MOV B.0,C ;保护 CYMOV C,/P1.7ANL C,B.4MOV B.l,CMOV C,Pl.0ANL C,/ACC.7ORL C,B.0ORL C,BlMOV PSW.5,C324 请 指 出 下 列 程存 中 data、74H、78H 的 本质 和数量 。答:MOV A, #data ;data为立即数MOV A, data ;data为片内RAM中的存储单元MOV datal, data2 ;datal,dala2均为片内RAM中的存储单元MOV 74H,#78H

25、 ;#78H为立即数,74H为片内RAM中的存储单元 3.25 设R0的内容为32H,A的内容为48H,而片内RAM 的32H单元的内容为80H,40H单元的内容为08H。请指出在执行下列程存段后,上述各单元的内容变化。答: 指 令 执行结果MOV A , R0 A 的内容变为 80HMOV R0,40H 片 内 RAM 的 32H 单元的 内容为 08HMOV 40H ,A 片 内 RAM 的 40H 单元的 内容为 80HMOV R0,# 35 R0 的 内容变为 23H结果 : R0 的 内容为 23H ,A 的 内容为 80H ,片内 RAM 的 32H 单元的内容为 08H ,40H

26、单元的内容为 80H 。326 80C51有哪些逻辑运算功能?各有什么用处?设A中的内容为 101010l0B,R4由表为 01010101B。请写出它们进行与、或、异或操作的结果。答(1)逻辑运算功能 单操作数逻辑运算指令,其操作对象都是累加器A,包括:清0、取反、循环左移、带进位循环左移、循环右移、带进位循环右移和半字节互换指令。 双操作数逻辑运算指令,包括:逻辑与(ANL)、逻辑或(ORL)及逻辑异或(XOR)三类操作。 布尔(位)逻辑操作指令,包括:位逻辑与(ANL)及位逻辑或(ORL)两类操作。 ( 2 ) 逻辑运算的用处 若是对口的操作,即为读一改一写。 逻辑与运算指令用做清除。

27、逻辑或运算指令用做置位。 用RLC A指令将累加器A的内容作乘2运算。 用RRC A指令将累加器A的内容作除2运算。 ( 3 ) 操作的结果 A与R4操作的结果: 00000000B A或R4操作的结果: 111111llB A异或R4操作的结果: 111111llB327 80C51的转移类指令有何独特优点?有哪几种无条件转移指令?如何选用?答: 1. 条件转移指令 在条件转移指令中两类指令有独特的优点。 (1)比较转移(CJNE)指令 CJNE A,direct,rel A内容与直接寻址单元内容比较,并转移。 CJNE A,#data,rel A内容与立即数比较,并转移。 CJNE Rn,

28、#data,rel 寄存器内容与立即数比较,并转移。 CJNE Ri,#data,rel 间址单元内容与立即数比较,并转移。 这4条指令能对所有单元内容进行比较,当不相等时程序作相对转移,并指出其大小,以备作第二次判断。 其功能可从程序转移和数值比较两个方面说明。 程序转移: 若目的操作数=源操作数,则 程序顺利执行 PC(PC)+3 进位位清0 CY0 若目的操作数源操作数,则 程序转移 PC(PC)+3十rel 进位位清0 CY0 若目的操作数源操作数,则 程序转移 PC(PC)+3十rel 进位位清0 CYl 数值比较: 在80C51的指令系统中没有比较指令,两个数值的比较可利用这4条指

29、令来实现,即可按指令执行后,根据CY的状态来判断数值的大小。 若(CY)=0,则目的操作数源操作数; 若(CY)=1,则目的操作数源操作数。 (2)循环转移(DJNZ)指令 80C51设有功能极强的循环转移指令: DJNZ Rn,rel 以工作寄存器作控制计数器。 DJNZ direct,rel 以直接寻址单元作控制计数器。 这2条基本指令可派生出很多条不同控制计数器的循环转移指令,大大扩充了应用范围和多重循环层次。 2. 无条件转移指令 无条件转移指令的功能是程序无条件地转移到各自指定的目标地址去执行,不同的指令形成的目标地址不同。共有4条: (1)相对转移(SJMP)指令 SJMP rel 指令的目标地址是由PC(程序计数器)和指令的第二字节带符号的相对地址相加而成的。指令可转向指令前128B或指令后127B。 (2)短转移(AJMP)指令 AJMP addr11 指令提供11位地址,目标地址由指令第一字节的高三位a10。a8和指令第二字节的a7a0所组成。因此,程序的目标地址必须包含AJMP指令后第一条指令的第一个字节在内的2KB范围内。 (3)长转移(LJMP)指令 LJMP addrl

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1