第三章-80C51系列单片机指令系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第三章80C51系列单片机指令系统3·180C51系列中所有单片机是否使用完全相同的指令系统?答:80C51系列单片机以MCS一51系列的8051为基核,采用CHMOS工艺,其指令系统与MCS一51单片机的指令系统完全相同。但是在一些非总线型的产品中,由于引脚的减少,不能扩展外部数据存储器,MOVX类的指令是无效的;相应的,也不能扩展外部程序存储器,ACALL、LCALL、AJMP及LJMP类的指令的使用也将受到限制。3·2区别CPU时存中的时钟周期、节拍(相)、状态周期、机器周期、指令周期。答:80C51有内部时钟振荡器,在振荡器外部引脚XTAL2、XTALl上并联石英谐振器和振荡电容后产生单片机的基本时钟频率fosc.。fosc.是单片机时序状态的基础。时钟周期:基本时钟频率fosc.,其振荡周期为Tosc.,也称时钟周期。状态周期:由两个时钟周期Tosc构成一个状态周期Ts。节拍:一个状态周期里将两个Tosc分成Pl、P2节拍(或相)。机器周期:6个状态周期Ts为一个机器周期Tw。机器周期是指令周期的基本单位。指令周期:完成一条指令操作需要的机器周期数,称为指令周期。80C51系列中通常有单周期指令、双周期指令及四周期指令等。3·3请区别汇编指令、指令代吗、指令周期、指令长度(字节教)。答:汇编指令:是指令系统最基本的书写方式,它由助记符、目的操作数、源操作数构成。格式如下:助记符目的操作数,源操作数;(注释)指令代码:是程序指令的二进制数字表示方法,是在程序存储器中存放的数据形式。指令周期:是指完成一条指令操作需要的机器周期数。指令长度:是指指令代码所占的字节数,有单字节指令、双字节指令和三字节指令。无论是单字节、双字节还是三字节指令,第1个字节代码为操作码,它表达了指令的操作功能;第2、3个字节则为操作数,可以是地址或立即数。3·480C51指令系统中有哪些寻址方式?相应的寻址空间在何处?请举一例说明。答:1.80C51指令系统的寻址万式80C51指令系统中有寄存器寻址、直接寻址、间接寻址、立即寻址、位寻址、基址变址寻址和相对寻址七种寻址方式。(1)寄存器寻址方式80C51中所有的工作寄存器R0~R7和SFR都是可寻址寄存器。在寄存器寻址操作中,这些寄存器都以寄存器名作指令操作数。在寄存器寻址方式的操作指令中,寄存器内容作为操作数,可以是源操作数或目的操作数。例如:INCDPTR;DPTR寄存器内容加1MOVA,R7;工作寄存器R7内容送累加器A中DIVAB;A内容除以B寄存器内容XCHA,R6;A内容与R6内容交换(2)直接寻址方式直接寻址方式的操作指令直接把地址作为操作数来运行,既可作源操作数,也可作目的操作数。如:MOV30H,40H;把片内存储器40H单元的内容送入;30H单元MOVR6,DPH;寄存器DPH的直接寻址,将DPH;中的内容送入R6(3)间接寻址方式间接寻址寄存器有Ri(i=0、1)和DPTR。间接寻址时,在间接寻址寄存器标记前加@符号。间接寻址时,寄存器的内容是操作数的地址。●通过@Ri可以对片内数据存储器的00H~FFH单元间接寻址。如将40H中的内容送入累加器A申,其间接寻址操作如下:MOVRl,#40H;用Rl作间接寻址寄存器,给Rl;赋予地址值MOVA,@R1;@Rl中内容送人A申●通过@DPTR对片外数据存储器0000H~FFFFH的间接寻址。如将A中的内容送入片外数据存储器385FH单元中,其间接寻址操作如下:MOVDPTR,#385FH;用DPTR作间接寻址寄存器,给DPTR;赋以地址值MOVX@DPTR,A;A中的内容送人片外RAM的385FH;单元中(4)位寻址方式80C51中有完全服务于位寻址操作的布尔指令系统。为了满足位操作中位状态的缓冲、传送、运算,将进位位C作为位寻址操作的位累加器。在位寻址操作中,位单元可以使用地址编号或位地址名。如:MOV5FH,C;将进位位C的状态送5FH位地址中ANLC,5FH;将5FH的位状态与进位位C的状态;相与,其结果保留在C中SETBTR0;将TCON中的TR0置位CLR8CH;将TCON中的TR0清零,TR0的;位地址为8CH(5)立即寻址方式指令中常常要使用一些常数来参与指令操作,由于这些常数能立即传送或赋值,故称为立即数。立即数前面必须加#标记。指令中的立即数有8位立即数#data8和16位立即数#datal6。由于立即数是一个常数,不是物理空间,故立即数在寻址操作中只能作为源操作数。如:MOVA,#40H;立即数40H给A赋值MOVDPTR,#385FH;立即数385FH给DPTR赋值ANLA,#55H;A中的数与55H相与,其结果放在A中(6)基址变址寻址方式基址变址寻址方式是以一个基地址加一个变量地址的寻址操作方式。作为基地址使用的有PC指针和DPTR地址指针;A作为变量地址使用。基址变址寻址方式是一种间接寻址方式,基址变址作为间接地址。采用基址变址寻址操作的指令只有以下三条,即:MOVCA,@A+DPTR;查表指令MOVCA,@A+PC;查表指令JMP@A+DPTR;散转指令前两条用于程序存储器的查表操作,后一条则用于程序的分支散转。(7)相对寻址方式相对寻址是将程序转移到相对地址的寻址转移操作。相对寻址中,相对地址rel是一个8位数的地址偏移量,是相对于相对转移指令下一条指令第一个指令代码的地址偏移量。程序转移的范围为-128~+127,即向前(PC值加大)转移,最大为127个字节,向后转移(PC值减小)可转移128个字节。相对寻址操作使用在相对转移指令中,如:DJNZR0,SIN1;工作寄存器R0减1不为零时;程序转移到SINl标号处2.80C51指令系统中各寻址方式的寻址空间80C51指令系统中各寻址方式的寻址空间列入题表3-1中题表3-180C51指令系统中寻址方式和寻址空间3·5片内RAM20H~2FH中的128个位地址与直接地址00H~7FH形式充全相同,如何在指令中区分出位寻址操作和直接寻址操作?答:虽然,片内RAM20H~2FH中的128个位地址与直接地址00H~7FH形式完全相同,但是在位寻址操作和直接寻址操作中,这两者的区别是很明显的。位寻址的操作只适用于下列位指令,而直接地址操作对这些指令是无效的。(1)布尔传送指令MOVC,bit;(C)←(bit)MOVbit,C;(bit)←(C)(2)布尔状态控制指令①位清除(CLR)指令:CLRbit;(bit)←0②位置1(SETB)指令SETBbit;(bit)←l③位取反(CPL)指令CPLbit;(bit)←(/bit)(3)布尔(位)逻辑操作指令①位逻辑与(ANL)操作指令ANLC,bit;(C)←(C)∧(bit)ANLC,/bit;(C)←(C)∧(/bit)②逻辑或(ORL)操作指令ORLC,bit;(C)←(C)∨(bit)ORLC,/bit;(C)←(C)∨(/bit)(4)布尔(位)条件转移指令判位变量转移指令:JBbit,relJNBbit,rel3·6什么是源操作数?什么是目的操作数?通常在指令中如何加以区分?答:操作数是指令操作所需的数据、地址或符号。由于指令操作时,操作数有源和目的之分,通常右边操作数为源操作数,左边为目的操作数。例如:MOVA,#40H;把立即数#40H送入累加器A中80C51指令系统中大多数为两个操作数,少数为一个操作数;在CJNE指令中必须有第三个操作数来表达程序转移的目的地;而个别指令则不需要操作数,如子程序返回RET、中断返回RETI和空操作NOP。3·7查表指令是在什么空间上的寻址操作?答:查表指令MOVC只用于程序存储器的操作,因常数表格都固化在程序存储器中。3·8在MOVX指令中,@Ri是一个8位地址指针,如何访问片外数据存储器的16往地址空间?答:把片外数据存储器的16位地址,分为高8位地址和低8位地址,将低8位地址送入Riai=0,1)中,而将高8位地址通过P2口直接输出,然后执行MOVX指令即可:MOVP2,#高8位地址MOVRi,#低8位地址;i=0,1MOVXA,@Ri;读片外数据存储器MOVX@Ri,A;写片外数据存储器3·980C51的指令系统中PSW(程序状态学)起什么作用?它能反映哪些指令的运行状态?答:算术运算指令运行时会产生进位、借位、溢出等状态,这些状态标志存放在程序状态字(PSW)中。这些标志位如题表3-2所列。3·1080C51指令系统中有了长跳转LJMP、长调用LCALL指令,为何还设置了短跳转AJMP、短调用ACALL指令?在实际使用时应怎样考虑?答:长跳转LJMP在64KB范围内转移,而AJMP只能在2KB空间转移。长调用LCALL调用位于64KB程序空间的子程序,而短调用ACALL调用位于2KB程序空间范围的子程序。但是AJMP、ACALL指令代码长度为2个字节,LJMP、LCALL指令代码长度则为3个字节。3·11查表指今中都采用了基址变址的寻址方式,在MOVCA,@A+DPTR和MOVCA,@A+PC中分别使用了DPTR和PC作基址,请问这两个基址代表什么地址?答:查表指令都采用基址加变址的间接寻址方式访间表格中的常数。指令不同,基址和变址的含义不同。使用@A十DPTR基址变址寻址时,DPTR为常数且是表格的首地址,A为从表格首址到被访问字节地址的偏移量。使用@A+PC基址变址寻址时,PC照例是下条指令首地址,而A则是从下条指令首地址到常数表格中的被访问字节的偏移量。3·12在散转指令应用安例中,为什么要将变址寄存器A中的内容(键号)展宽为3个字节?答:在16个键的键盘中对应于每个键按下后,键盘处理程序都会有一个相应的键号存放在A中。设16个键的键号为00H~0FH。由于每一个键的键操作内容不同,键操作程序长短不一。因此,设定一个规范长度的人口地址表,表中依次存放16个键的无条件转移指令LJMPKPRGi(i=0~15),由LJMPKPRGi再转移到相应的键操作程序KPRGi中。因此,要给每个人口地址展宽为3个字节,以便安放3个字节的LJMP指令。3·13十进制调整指令DA起什么作用?用在何处?答:在实际应用中,常需使用BCD码加法操作,而80C51指令系统中,只能实现二进制运算,RCD码形式的加运算操作后,其结果常常不再是BCD码的加运算结果,必须迸行十进制调整。十进制调整指令DA就是用于调整的。例如.98+95=193,而98H+95H=2DHCY=l。如果按下述指令操作:MOVA,#98H;BCD(l)码入AADDA,#95H;两BCD码相加98H+95H=2DH,CY=lDAA;十进制调整后(A)=93H,CY=l未经十进制调整的结果为12DH,十进制调整后为193H。可以看出,只有经过十进制调整的BCD码加法结果才是正确的。3·14比较不等转移指令CJNE有哪些扩展功能,如何创造性地使用这些功能?答:在比较不等转移指令中,两操作数相比较,不相等时,程序转移到相对地址处。还可以利用比较不等指令操作时的进位标志,实现两操作数大小的比较转移,即通过两操作数比较大小不同转移到不同的入口处。如:CY=l表示第二操作数大于第一操作数;CY=0表示第一操作数大于第二操作数。根据CY状态可再实现大小比较的转移。通过比较不等和大小不同的转移,可以实现数据的界限管理。如在数据采集系统中,设定正常界限范围,超出该范围的数据作为粗大误差处理。3·15逻辑操作可以实现哪些状态操作?这些操作在实际程序中如何应用?答:在80C51指令系统中有许多位操作指令,然而,对于不可位寻址的一些字节单元来说,要对其中的多个位状态进行清零、置位、求反、比较时,则求助于逻辑运算指令。(1)逻辑与操作的位屏蔽逻辑与操作具有遇1保持,遇0为扩的逻辑特点。在程序中可用于实现位屏蔽(将某些位清零)的程序操作。(2)逻辑或。操作的置位逻辑或操作具有遇0保持,遇1置位的逻辑特点。在程序中可用于实现字节中的置位(将某些位置1)操作。(3)异或操作的求反与比较逻辑异或操作具有遇1取反,遇0保

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功