单片机第4章8051单片机指令系统.ppt
《单片机第4章8051单片机指令系统.ppt》由会员分享,可在线阅读,更多相关《单片机第4章8051单片机指令系统.ppt(126页珍藏版)》请在课桌文档上搜索。
1、第4章 8051单片机指令系统,寻址方式及常用符号注释,指令格式,知识点:,单片机系统,单片机系统:由硬件系统和软件系统组成,硬件是基础。第二章已介绍,软件是在硬件的基础上对其资源进行合理调配和使用,从而完成应用系统所要求的任务,二者相互依赖,缺一不可。(本章着重介绍),805l单片机指令系统简介,指令是软件的基础(如同盖房子的砖和瓦),计算机能够识别的一种命令称作指令(相当于汉语中汉字),同种计算机的指令的集合称为指令系统(相当于汉语的新华字典),定义一种任务的指令的集合称为程序(相当于一篇文章),8051单片机共有111条指令,单字节指令(49条)单字节指令格式由8位二进制编码表示,例如:
2、CLR A该指令以E4H存放在内存中,占1个字节,双字节指令(45条)双字节指令格式由两个字节组成,操作码和操作数,例如:MOV A,10H 该指令以74H 10H顺序存放在内存,占2字节,A,CLR A,MOV A,10H,A,三字节指令(17条)三字节指令格式中,第一个字节为操作码,后两个字节为操作数,例如:MOV 40H,30H该指令在内存中以75H 40H 30H顺序存放,占3字节,40H,MOV 40H,#30H,从执行时间看:单周期(执行一条指令需占用1个机器周期)64条 双周期(执行一条指令需占用2个机器周期)45条 四周期(执行一条指令需占用4个机器周期)2条(乘法和除法),按
3、指令完成的功能分:数据传送类指令28条 算术运算类指令24条 逻辑操作类指令25条 位操作类指令17条 控制转移类指令17条,操作码:规定了指令所实现的操作功能 操作数:指出了参加操作的数据来源(称作源操作数)和操作结果存放 在什么地方(称作目的操作数),指令格式,8051单片机指令由操作码和操作数两部分组成操作码 目的操作数,源操作数,例如:MOV A,#00H;累加器清0,操作码,目的操作数,源操作数,寻址方式,什么是寻址方式?,寻址方式是指计算机在执行指令过程中获取操作数的方式。,例如:MOV A,#20H;立即寻址:源操作数为立即数20H,目的 操作数在A中。MOV B,R2;寄存器寻
4、址:源操作数在工作寄存器R2 中,目的操作数在寄存器B中。,寻址方式中常用符号注释,1Rn(n=07)当前选中的工作寄存器组R0R7,它在片内RAM中的地址由PSW中的RS1、RS0确定。如:RS1=0 RS0=1表明此时的R0R7是内存中的08H0FH,例如:MOV A,R5;是将内存0DH中的内容A 记作:(R5)A,0DH,A,MOV A,R5,2Ri(i0,1)当前选中的工作寄存器组中可作为地址指针的两个工作寄存器R0、R,操作数在片内RAM中的地址由RSl或RS0确定。如:RS1=0 RS0=1表明此时的R0、R1是内存中的08H、09H,例如:MOV A,R0;是由内存08H中的内
5、容作为 地址,将该地址指定的存储单元的内容A 记作:(R0)A,R0,39H,A,MOV A,R0,3#data 8位立即数,即包含在指令中的8位常数。如:MOV A,#56H的功能是56H A,4#data 16 16位立即数,即包含在指令中的16位常数。如:MOV DPTR,#5678的功能是5678 DPTR,A,A,MOV A,#56H,MOV DPTR,#5678H,DPTR,DPTR,5data 8位片内RAM单元的直接地址(包括SFR 即特殊功能寄存器)。如:MOV A,56H的功能是(56H)A;即56H存储单元的内容(数据)送A,56H,A,MOV A,56H,6.addr
6、11 11位地址。用于ACALL(短调用)和AJMP(短跳转)指令中,目的地址必须是与下一条指令第一个字节的同一个2K字节程序存储器地址空间之内。因为211=2048简称2K,7addr 16 16位目的地址。用于LCALL(长调用)和LJMP(长转移)指令中,目的地址在64K字节程序存储器地址空间中。因为216=65536字节简称64K例如:LJMP addr 16,8.Rel 补码形式的8位地址偏移量。用于相对转移指令中,偏移量以下一条指令第一字节地址(也称当前PC值)为基址,地址偏移量范围为一128+127,-128的补码为10000000B(也是-0的补码),+127的补码是它自己,即
7、01111111B,例如:JNZ Rel;其中Rel以补码形式表示(10000000B01111111 B之间),9bit 片内RAM或SFR(特殊功能寄存器)的直接寻址位地址用于对可寻址位进行操作如:MOV C,bit;功能是bit所指位的内容送进位标志位C例如:MOV C,00H,10 间接寻址方式中,表示间接寻址寄存器的符号。在寄存器前冠以“”时,说明该寄存器的内容不是“所需数据”,而是存放“所需数据”的地址如:MOV A,R0假设:R0的内容为20H,记做(R0)=20H 20H单元的内容为21H,记做(20H)=21H 那么,R0指向的“所需数据”就是21H,记做(R0)=21H,2
8、0H,C,1,MOV C,00H,R0,20H,A,MOV A,R0,11 位操作指令中,表示对该位先求反再参与操作,但不影响该位原值。如:MOV C,/bit;的功能是bit位的内容先求反后送进位标志位C,即(/bit H)C,例如:MOV C,/05H;将20H单元的D5位的内容求反后送进位位C,20H,MOV A,/05H,C,1,12(X)表示X中的内容 用于对指令的注释 例如:(R7)A;表示将R7的内容送(赋值)到A,14 指令操作流程,将箭头左边的内容送(赋值)到箭头右边的单元中 用于对指令的注释 如上面所述,13(X)表示由X所指地址单元中的内容 用于对指令的注释,特指R0、R
9、1、DPTR 例如:MOV A,R0;(R0)A MOV A,R1;(R1)A MOV A,DPTR;(DPTR)A,3点特别提示,1、助记符语言一般由操作码和操作数两部分组成 操作码:规定了指令的操作功能 操作数:代表了指令的操作对象,2、对选定的工作寄存器R0R7,只有R0和R1既能存放数据又能存放地址,若R0、R1前面加“”,表示R0、R1中存放地址,若不加“”表示存放数据,3、同样DPTR既能存放数据又能存放地址,若DPTR前面加“”表示数据指针寄存器存放16位地址,否则表示存放16位数据,1、8051单片机指令系统共多少条指令?2、按字节分类各是多少条?3、按指令执行周期分类各是多少
10、条?4、按功能分类各是多少条?,思考题,111条,49,45,17,单64,双45,四2,按指令完成的功能分:数据传送类指令28条 算术运算类指令24条 逻辑操作类指令25条 位操作类指令17条 控制转移类指令17条,7种寻址方式,(1)立即寻址 如:MOV A,#45H,(2)直接寻址 如:MOV A,45H,(3)寄存器寻址 如:MOV A,R2,(4)寄存器间接寻址 如:MOV A,R0,(5)变址寻址 如:MOVC A,A+PC,(6)相对寻址 如:JC rel,(7)位寻址 如:CLR bit,1、立即寻址 立即寻址方式是指操作数包含在指令字节中。跟在指令操作码后面的数就是参加运算的
11、数,该操作数称为立即数,以“#”为标志。立即数有一字节和二字节两种:例如:MOV A,#3AH 和 MOV DPTR,#0DFFFH,执行这条指令是完成3AHA操作,A,执行这条指令是完成DFFFHDPTR操作,DPTR,注意:#DFFFH一定要写成#0DFFFH,这是因为十六进制的AF与字母相同,必须区别,例如:MOVA,#0FFH;FFH 这条指令是把FFH这个数送入累加器A中,该指令的代码为74H、FFH,累加器A的地址为E0H。下面我们看看执行过程和结果,片内程序存储器,0000H,0FFFH,PC,00H,FFH,片内数据存储器,E0H,A,MOV A,#0FFH,11111111,
12、2.直接寻址 在指令中直接给出操作数的地址,这种寻址方式就属于直接寻址方式。在这种方式中,指令的操作数部分直接是操作数的地址 在8051 单片机指令系统中,直接寻址方式可以访问 3 种存储器空间:,(1)内部数据存储器的低 128 个字节单元(00H7FH)。如:MOV A,20H(2)特殊功能寄存器。特殊功能寄存器只能用直接寻址方式进行访问。如:MOV A,SBUF(3)位地址空间(00H7FH)。如:MOV C,20H,注意:这里的20H是字节地址,注意:这里的20H是位地址,注意:这里的SBUF是串口输入输出缓存器,地址为99H,例如:MOV A,69H;(69H)(A)这条指令的代码为
13、E5H、69H 这条指令功能是把69H单元内容送入累加器A中 下面我们一起看看执行这条指令的过程和结果,00H,FFH,片内数据存储器,A,0000H,0FFFH,69H,片内程序存储器,PC,E0H,MOV A,69H,3、寄存器寻址 在该寻址方式中,参加操作的数存放在寄存器里。寄存器包括8个工作寄存器R0R7,累加器A,寄存器B、数据指针DPTR,如:MOV A,R3;(假定PSW中RS1=0、RS0=0,则R3的地址为03H)MOV B,A;(A的地址为E0H)MOV A,B;(B的地址为F0H,代码为E5H、FOH)MOV DPL,A;(DPL的地址为82H),00H,FFH,片内数据
14、存储器,B,0000H,0FFFH,E0H,片内程序存储器,PC,F0H,A,下面我们一起看看执行MOV A,B指令的过程和结果 MOV A,B;(B的地址为F0H,代码为E5H、FOH),MOV A,B,4.寄存器间接寻址 在这种寻址方式中,操作数所指定的寄存器中存放的不是操作数本身,而是操作数地址。可用来间接寻址的寄存器有:R0、R1以及数据指针DPTR,使用时前面加符号表示间接寻址。,如:MOV A,R1;(假定PSW中RS1=0、RS0=0,则R1的地址为01H)MOV R0,A;(假定PSW中RS1=0、RS0=0,则R0的地址为00H)MOVX DPTR,A;(DPTR的地址为82
15、H),00H,FFH,片内数据存储器,0000H,0FFFH,E0H,片内程序存储器,PC,A,下面我们一起看看执行MOVX DPTR,A指令的过程和结果 MOVX DPTR,A;(DPTR的地址为82H,指令代码为F0H)假定DPTR=FFFDH,0FFDH,0000H,FFFFH,片外数据存储器,FFFDH,MOVX DPTR,A,5.变址寻址 这种寻址方式用于访问程序存储器中的数据表格,它以基址寄存器DPTR或PC的内容为基本地址,加上变址寄存器A的内容作为操作数的地址,如:MOVC A,ADPTR MOVC A,APC 下面我们一起看看这两条指令的执行过程和结果,00H,FFH,片内数
16、据存储器,0000H,0FFFH,E0H,片内程序存储器,PC,A,1、MOVC A,ADPTR;(指令代码为93H)假定A=05H、(DPTR)=0300H,0305H,0300H,0300,05,DPTR,A+,0305,10001000,10001000,00H,FFH,片内数据存储器,0000H,0FFFH,E0H,片内程序存储器,PC,A,2、MOVC A,APC;(指令代码为83H)假定A=15H、(PC)=02F0H,0305H,02F0,15,PC,A+,0305,02F0H,02F0H,6.相对寻址 相对寻址是指以当前PC值作为基准,向上或向下寻找下一条指令的存放地址。相对寻
17、址主要是用于寻找下一条指令的存放地址以决定程序走向,其他寻址方式是用于寻找操作数。这是相对寻址区别于其他寻址方式的关键,在8051 指令系统中设有相对转移指令,在相对转移指令中采用相对寻址方式。这种寻址方式是以PC的内容为基本地址,加上指令中给定的偏移量作为转移地址。指令中给出的偏移量是一个 8 位带符号的常数,以补码表示,其范围为128+127。,0000H,FFFFH,片内程序存储器,PC,PC+2+18H,PC+2,C=0,C=1(正转),注意:PC当前值=本指令代码存放的地址值+本指令代码的字节数(JC 18H的字节数为2)+偏移量(rel)的原码本例的转移目标地址=PC+2+18H,
18、又如:JC 18H;机器代码为40H、18H 这条指令表示若进位位C=o,执行下一条指令;若进位位C=1,则跳到以PC中的当前值为基地址,加上偏移量18H后所得到的结果为地址的地方去执行指令,0000H,0FFFH,片内程序存储器,PC,又如:JC F5H;机器代码为40H、F5H 这条指令表示若进位位C=o,执行下一条指令;若进位位C=1,则跳到以PC中的当前值为基地址,加上偏移量【F5H】原=-B后所得到的结果为地址的地方去执行指令,PC+2,PC+2+【F5H】原=PC-9,C=0,C=1(反转),注意:PC当前值=本指令代码存放的地址值+本指令代码的字节数(JC F5H的字节数为2)+
19、偏移量(rel)的原码本例的转移目标地址=PC+2+(-0BH)=PC-9记住:正转rel80H、反转 rel 80H,7.位寻址 位寻址是指对片内RAM的位寻址区和某些可位寻址的特殊功能寄存器进行位操作时的寻址方式。位地址与直接寻址中的字节地址形式完全一样,主要由操作码来区分,使用时应注意,例如:CLR 92H 92H这一位是特殊功能寄存器P1的D2位,假设指令执行前P1=F7H,则执行该指令后,P1=F3H,P1,P1,CLR 92H,1、JZ 67H是哪种寻址方式?2、JC 10H是转移指令,它是正转还是反转?如果PC=0FF5H,C=1。转移后的PC=?3、JC F8H是转移指令,它是
20、正转还是反转?如果PC=0FF8H,C=1。转移后的PC=?,思考题,相对寻址,1007H,0FF2H,指令分类,(1)数据传送类 如:MOV A,#45H,(2)算术运算类 如:ADD A,#45H,(3)逻辑操作类 如:RL A,(4)控制转移类 如:JC 45H,(5)位操作类 如:CPL C,数据传送类指令,传送类指令是指令系统中最基本、使用最多的一类指令。主要用于数据的传送、保存以及交换等场合。按照源和目的不同,分9小类,1)以累加器A为目的操作数的指令(4条),MOV A,Rn;(Rn)(A)寄存器寻址MOV A,data;(data)(A)直接寻址MOV A,Ri;(Ri)(A)
21、间接寻址MOV A,#data;#data(A)立即寻址,2)以寄存器Rn为目的操作数的指令(3条)这组指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中。,MOV Rn,A;(A)(Rn)寄存器寻址MOV Rn,data;(dara)(Rn)直接寻址MOV Rn,#data;#data(Rn)立即寻址,例如:MOV R2,45H假定RS1=0、RS0=1那么R2的地址为0AH假定(45H)=88H执行该指令后结果为:(0AH)=88H(45H)=88H(不变),00H,45H,片内数据存储器,0AH,10001000,MOV R2,45H,3)以直接地址为目的操作数的指令(5条)这
22、组指令的功能是把源操作数指定的内容送到由直接地址data所指定的片内RAM,MOV data,A;(A)(data)寄存器寻址MOV data,Rn;(Rn)(data)寄存器寻址MOV data1,data2;(data2)(datal)直接寻址MOV data,Ri;(Ri)(data)间接寻址MOV data,#data;#data(data)立即寻址,00H,45H,片内数据存储器,0AH,MOV 0AH,45H,10101010,例如:MOV 0AH,45Hdata1=0AH data2=45H(45H)=AAH执行该指令后结果为:(0AH)=AAH(45H)=AAH(不变),4)以
23、间接地址为目的操作数的指令(3条)这组指令的功能是把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中,MOVRi,A;(A)(Ri)寄存器寻址MOVRi,data;(data)(Ri)直接寻址MOVRi,#data;#data(Ri)立即寻址,00H,45H,片内数据存储器,18H,MOV R0,45H,01100110,例如:MOV R0,45H假定:RS1=1 RS0=1 则:R0的地址为18H如果:(45H)=66H执行该指令后结果为:(18H)=66H(45H)=66H(不变),5)查表指令(2条)这组指令的功能是对存放于程序存储器中的数据表格进行查找传送(源数据地址是4位十六
24、进制数),MOVC A,A+DPTR;(A+(DPTR)(A)变址寻址MOVC A,A+PC;(PC)+1(PC)(A+(PC)(A)变址寻址,例如:MOVC A,A+PC本指令为单字节,代码83H假定:PC=0234H 则:当前PC=0235H(指令为单字节)如果:A=06H 则:源操作数的地址=0235H+06H=023BH如果(023BH)=55H执行该指令后结果为:A=55H(023BH)=55H(不变),片内程序存储器,0000H,0FFFH,0234H,023BH,0235H,00000110,A,PC+1+A,01010101,MOVC A,A+PC,6)累加器A与片外RAM传送
25、指令(4条)这组指令的功能为累加器A与片外RAM间的相互传送 由于MCS51的指令系统中没有专门的输入输出指令,且片外扩展的IO口与片外RAM是统一编址的,故以下4条指令也可以作为输入输出指令。使用寄存器间接寻址方式,MOVX A,DPTR;(DPTR)(A)MOVXDPTR,A;(A)(DPTR)MOVXA,Ri;(Ri)(A)MOVXRi,A;(A)(Ri),例如:MOVX A,DPTR本指令为单字节,代码E0H假定:DPTR=1234H(1234H)=77H执行该指令后结果为:A=77H(1234H)=77H(不变),片外数据存储器,0000H,FFFFH,1234H,A,MOVX A,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 8051 指令系统
链接地址:https://www.desk33.com/p-246806.html