资源预览内容
第1页 / 共139页
第2页 / 共139页
第3页 / 共139页
第4页 / 共139页
第5页 / 共139页
第6页 / 共139页
第7页 / 共139页
第8页 / 共139页
第9页 / 共139页
第10页 / 共139页
亲,该文档总共139页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第三章(第 1页),主讲:张松灿 河南科技大学电子信息工程学院自动化系,单 片 机 原 理 与 应 用,第三章 80C51单片机的指令系统,第三章(第 2页),基本内容,3.1 概述3.1.1指令分类3.1.2指令格式3.1.3指令系统中使用的符号 3.2 寻址方式和寻址空间 3.3 指令系统3.3.1数据传送类指令3.3.2算术运算类指令3.3.3逻辑运算类指令3.3.4控制转移类指令3.3.5布尔(位)操作类指令,第三章(第 3页),3.1概述 指令的定义 1、指令:是人们向计算机发的一种命令;一条指令对应着一种操作。 2、指令系统:CPU所能执行的全部指令的集合。CPU能够执行多少条指令是由CPU的内部结构决定的。不同的CPU,其指令系统不同。,第三章(第 4页),3.1.1指令分类80C51系列单片机完全继承MCS51的指令系统,共有111条指令,指令系统可分为: (1)按其功能可分为五大类: 数据传送类指令(28条); 算术运算类指令(24条); 逻辑运算类指令(25条); 控制转移类指令(17条); 布尔操作(位)类指令(17条)。,第三章(第 5页),(2)MCS-51单片机指令系统按指令所占的字节数可分为以下三类:单字节指令(49条)双字节指令(46条)三字节指令(16条) (3)按指令的执行时间可分为以下三类:单周期指令(65条)双周期指令(44条)四周期指令(2条),第三章(第 6页),3.1.2指令格式 指令格式:指令的表示方法。其内容包括指令的长度和指令内部信息的安排等。 一般格式为:操作助记符 目的操作数,源操作数;注释指令格式为:操作码 操作数 说明: (1)一般格式中的可选择符号“ ”,包含的内容因指令的不同可以有或无。 (2)两个操作数指令中,通常目的操作数写在左边,源操作数写在右边。,第三章(第 7页),一条指令通常由操作码和操作数两部分组成。操作码:规定指令所完成的操作;操作数:表示操作的对象。操作数可能是数据,也可能是取得数据的地址或符号。 举例:如:ANL A,40H功能:将立即数“40H”同累加器A中的数进行“与”操作,结果送回累加器。ANL为“与”操作的助记符,立即数“40H”为源操作数,累加器A为目的操作数。,REG或MEM,第三章(第 8页), 单字节指令:指令只有一个字节8位编码仅为操作码。80C51的指令系统中,共有49条单字节指令。,如:INC A。该指令的编码为:0000 0100B,其十六进制表示为04H,累加器A隐含在操作码中。功能:累加器A的内容加1。注意:在指令中用“A”表示累加器,而用“ACC”表示累加器对应的地址(E0H)。,80C51的指令系统中,有单字节、双字节和三字节等不同长度的指令。,第三章(第 9页),8位编码含有操作码和寄存器编码,高5位为操作码,低3位为存放操作数的寄存器编码。例如:MOV A,R0编码:1110 1000B,其十六进制表示为E8H(低3位000为寄存器R0的编码)。功能:当前工作寄存器R0中的数据传送到累加器A中。,第三章(第 10页), 双字节指令:双字节指令包括两个字节。第一字节表示操作码,第二个字节表示参与操作的数据或数据存放的地址。80C51指令系统中,共有46条双字节指令。,如:MOV A,#50H 编码:0111 0100B,0101 0000B。其十六进制表示为74H,50H。功能:立即数“50H”传送到累加器A中。,第三章(第 11页), 三字节指令:第一字节:该指令的操作码;后两个字节:参与操作的数据或数据存放的地址。在80C51指令系统中,共有16条三字节指令。,如:MOV 20H,#50H编码:0111 0101B,0010 0000B,0101 0000B。其十六进制表示为75H,20H,50H。功能:立即数“50H”传送到内部RAM 的20H单元中。,第三章(第 12页),3.1.3指令系统中使用的符号在指令或语句中,经常使用一些符号。下面将所使用的典型符号的意义作一说明。,Rn(n=0-7)-当前工作寄存器组中的寄存器R0-R7之的某一个; Ri(i=0,1)-当前工作寄存器组中可以作为地址寄存器的2个寄存器R0或R1; -间接寻址寄存器或基址寄存器的前缀符号; Ri: 表示寄存器间接寻址 #data -8位立即数; #data16-16位立即数; direct-内部数据存贮器单元的地址及特殊功能存器SFR的地址,对SFR,既可使用它的物理地址,也可直接使用它的名字。,第三章(第 13页),()- 表示 地址单元或寄存器中的内容; ()-由寻址的单元中的内容。 -将箭头右边的内容送入箭头左边的单元中。 $-表示当前指令的地址。 B-专用寄存器,用于MUL和DIV指令。 C-进位标志,或位运算时的累加器。 DPTR-数据指针,可以用作16位的地址寄存器。 addr11-11位目的地址; addr16-16位目的地址; rel-用补码形式表示的8位地址偏移量,值在128127范围内; bit-内部RAM和SFR中的具有位寻址功能的位地址。SFR中的位地址可以直接出现在指令中,为了阅读方便,往往也可用SFR的名字和所在的数位表示。如:表示PSW中奇偶校验位,可写成D0H,也可写成PSW.0的形式出现在指令中。 /-位操作数的取反操作前缀;,第三章(第 14页),3.2寻址方式和寻址空间寻址方式:用于说明操作数所在地址的方法。,指令由操作码和操作数组成。,操作码决定CPU执行何中操作。,操作数就是操作对象。无论何种指令其操作的对象都是数据。,数据在指令中有2种表示方法: 1、数本身 2、数所在的地方(REG,MEM中)。,指出操作数所在地方的方式就是寻址方式。,第三章(第 15页),根据指令操作的需要,计算机有多种寻址方式。一般来说,寻址方式越多,计算机的功能就越强,灵活性越大,指令系统也就愈加复杂。80C51系列单片机指令系统中共有以下7种寻址方式。立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。若不特别声明,寻址方式一般是指源操作数的寻址方式。,第三章(第 16页),1、立即寻址立即寻址:在指令中直接给出操作数。立即数:出现在指令中的操作数,因此就将这种寻址方式称为立即寻址。为了与直接寻址指令中的直接地址相区别,在立即数前面加前缀“#”。,例如: 指令 MOV A,#3AH其中3AH就是立即数,功能:把8位立即数3AH送入累加器。,第三章(第 17页),此外,在80C51系列指令系统中还有一条16位立即数指令,即:MOV DPTR,#data16功能:把16位立即数送入数据指针寄存器。 例如:执行指令 MOV DPTR,#1556H,第三章(第 18页),2、直接寻址直接寻址:在指令中直接给出操作数单元的地址。例如:指令 MOV A,52H,功能:把片内RAM中 52H单元内的数据传送给累加器A。,第三章(第 19页),直接寻址方式只能给出8位地址,因此,其寻址范围只限于片内RAM,具体地说: (1)低128单元,在指令中直接以单元地址形式给出。 (2)特殊功能寄存器,这时除可以单元地址形式给出外,还可以寄存器符号形式给出。虽然特殊功能寄存器可以使用符号标志,但在指令代码中还是按地址进行编码的。直接寻址是访问特殊功能寄存器的惟一方法。,第三章(第 20页),3、寄存器寻址参加操作的数存放在寄存器里。可以获得较高的传送和运算速度。寄存器寻址方式中,用符号名称表示寄存器。例如:指令 INC R0功能:寄存器R0的内容加 1,再送回R0中。寄存器可以是:R0-R7;A;B(以AB寄存器对形式出现);DPTR。用ACC表示累加器时属于直接寻址。,第三章(第 21页),4、寄存器间接寻址寄存器间接寻址:寄存器中的内容为地址,然后从该地址去取操作数。指令的操作数是通过寄存器间接得到的,因此,称为寄存器间接寻址。 寄存器间接寻址也需以寄存器符号名称的形式表示。为区别寄存器寻址和寄存器间接寻址,在间接寻址中,应在寄存器的名称前面必须加前缀“”。,第三章(第 22页),假定R1寄存器的内容是60H,指令:ANL A,R1功能:R1寄存器的内容60H为地址,将60H地址单元的内容与累加器A中的数相“与”,其结果仍存放在A中。,第三章(第 23页),第三章(第 24页),寄存器间接的寻址空间: 片内RAM(采用R0,R1或SP); 片外RAM(采用R0,R1或DPTR)。注:堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以堆栈指针(SP)作间址寄存器的间接寻址方式。,第三章(第 25页),5、相对寻址在指令中给出的操作数为程序转移的偏移量。作用:为实现程序的相对转移而设立的,为相对转移指令所采用。目的地址=转移指令所在地址+转移指令字节数+rel偏移量rel是一个带符号的8位二进制补码数,所能表示数的范围是128-+127。因此以相对转移指令的所在地址为基点,向前最大可转移(127+转移指令字节数)个单元地址,向后最大可转移(128转移指令字节数)个单元地址。,第三章(第 26页),例如:指令 JC 80H若进位位C为0,则PC中的内容不变,即不转移;若进位位C为1,则以PC中当前值为基地址,加上偏移量80H后所得结果作为该转移指令的目的地址,其执行如图所示。,第三章(第 27页),指令的操作码存在1000H单元,偏移量存在1001H单元。执行该指令后,程序计数器PC指向1002H(即当前值)。这里80H128,故1002H与128(80H)相加(补码运算)后得到转移地址0F82H。 又如:JNB ACC.7,UP ;更常用,第三章(第 28页),6变址寻址以DPTR或PC作基址寄存器,累加器A作变址寄存器,以两者内容相加形成的16位程序存储器地址作为操作数地址。例如: MOVC A, A+DPTR功能:把DPTR和A的内容相加所得到的程序存储器地址单元的内容送A。,MOVC A,A + PC JMP DPTR,其余:,第三章(第 29页),图3-7 变址寻址示意图,第三章(第 30页),变址寻址指令的特点: (1)只能对程序存储器进行寻址; (2)变址寻址指令只有三条:MOVC A,A+DPTRMOVC A, A+PCJMP A+DPTR前两条是程序存储器读指令,后一条是无条件转移指令; (3)三条指令都是单字节指令; (4)用于查表操作,还可用于散转操作。,第三章(第 31页),7、位寻址51单片机有位处理功能,可对数据位进行操作,故有位寻址方式。 位寻址的寻址范围: (1)片内RAM中的位寻址区片内RAM中的单元地址20H-2FH。 (2) 可位寻址的特殊功能寄存器位 可位寻址的特殊功能寄存器共有11个,实有寻址位83位。,第三章(第 32页),寻址位的表示方法: 直接使用位地址表示。 单元地址加位的表示。例如88H单元的位5,则表示为88H.5。 特殊功能寄存器符号加位的表示。例如PSW寄存器的位5,可表示为PSW.5。 位名称表示,特殊功能寄存器中的一些寻址位是有名称的。例如PSW寄存器位5为F0标志位,则可使用F0表示该位。,第三章(第 33页),7种寻址方式,概括起来如下表所列,第三章(第 34页),寻址方式小结,第三章(第 35页),第三章(第 36页),不同存储器空间采用的寻址方式,第三章(第 37页),习题与思考: 1、 什么是寻址方式?80C51有几种寻址方式?是哪几种?对特殊功能寄存器应该使用什么寻址方式?对128B的RAM可以使用哪几种寻址方式? 2、 下列各条指令其源操作数的寻址方式是什么? (1)MOV A,#48H (2)ADD A,60H (3)ANL A,R0 (4)XCHD A,R0 (5)MOVX A,DPTR (6)MOV A,R0 (7)MOVC A,A+DPTR,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号