第3章单片机的指令系统.ppt
《第3章单片机的指令系统.ppt》由会员分享,可在线阅读,更多相关《第3章单片机的指令系统.ppt(112页珍藏版)》请在三一办公上搜索。
1、2023/11/18,1,第三章 单片机的指令系统,2023/11/18,2,3.1 指令与指令格式,3.1.1 指令计算机的指令是指使计算机执行各种操作的命令,它是计算机的控制信息。一台计算机所能执行的全部指令的合集称为这台计算机的指令系统。它集中地反映了微处理器的硬件功能和属性。不同种类的微处理器具有不同的指令系统。通常,指令系统包括指令格式、寻址方式、指令种类与指令功能等内容。这些也是读者必须熟悉并掌握的核心问题。,2023/11/18,3,3.1.2 机器语言指令格式机器语言或称为二进制代码语言,计算机可以直接识别。计算机能直接识别和执行的指令是用二进制编码表示的机器指令。机器语言对不
2、同型号的计算机来说一般是不同的。机器语言指令的一般格式:操作码 操作数操作码字段用来规定该指令要执行的操作,不可缺少。寻址方式码字段表示该指令的操作数应按哪一种寻址方式来寻找。形式地址码字段,表示操作数所在单元的形式地址。,2023/11/18,4,3.1.3 汇编语言指令格式汇编语言的实质和机器语言是相同的,但采用英文缩写的标识符,更容易识别记忆。这种机器指令称为汇编语言指令。MCS-51汇编语言的语句格式表示如下:标号:操作码操作数;注释操作码:是由助记符表示的字符串,表示指令的一个功能操作数:是指参加操作的数据或者是数据地址。标号:用来表示子程序名称或程序执行条件跳转时的程序跳转地址,实
3、际上是表示一个地址值。,2023/11/18,5,在80C51指令系统中,操作数可以是1、2、3个,也可以没有。不同功能的指令,操作数作用也不同。例如,传送类指令多数有两个操作数,写在左面的称为目的操作数(表示操作结果存放的单元地址),写在右面的称为源操作数(指出操作数的来源)。操作码与操作数之间必须用空格分开,操作数与操作数之间必须用逗号“,”分开。带方括号的项可有可无,称为可选项。由指令格式可见,操作码是指令的核心,不可缺少。,2023/11/18,6,3.1.4 汇编语言指令系统MCS-51汇编语言指令系统在存贮空间和执行时间方面具有较高的效率,编成的程序占用内存单元少,执行也很决捷,与
4、其应用范围的要求很相适应。,2023/11/18,7,3.2 寻址方式,计算机传送数据、执行算术操作、逻辑操作等都要涉及操作数。一条指令的执行,先要从操作数所在地址寻找到与本指令有关的操作数,这便涉及到寻址。MCS-51系列单片机的指令系统含有立即寻址、寄存器寻址、寄存器间接寻址、直接寻址、基址寄存器加变址寄存器间接寻址、相对寻址等寻址方式。,2023/11/18,8,3.2.1 立即寻址 指令中给出实际操作数据(立即数),一般用于为寄存器或存储器赋常数初值。8位立即数:MOV A,#40H;40H A 16位立即数:MOV DPTR,#2100H;2100H DPTRMOV A,#data(
5、8b);MOV DPTR,#data(16b);书写单片机的指令时,为了容易辨识是立即数,规定在它的前面加一“#”符号作为前缀。,2023/11/18,9,3.2.2 寄存器寻址寻找某工作寄存器自该寄存器获取或存放操作数,以完成指令规定的操作称为寄存器直接寻址或寄存器寻址。参加操作的数存放在寄存器里。寄存器包括8个工作寄存器R0R7,累加器A,寄存器B、数据指针DPTR如:MOV A,R0;(R0)A DEC B;(B)-1 B ADD A,R1;(A)+(R1)A INC DPTR;(DPTR)+1 DPTR,2023/11/18,10,3.2.3 寄存器间接寻址 指令中寄存器中的内容不是操
6、作数本身,而是操作数的地址,该地址的内容才是真正的操作数。存器间接寻址符号为“”,2023/11/18,11,a.当寻址内部RAM数据时,可用R0,R1(,SP)作为地址指针;如:设(R0)=65H,(65H)=47H MOV A,R0;MOV R0,#3AH;PUSH PSW;b.当访问外部RAM时,可使用R0,R1及DPTR作为地址指针。如:设(R0)=65H,(65H)=47H,(DPTR)=2000H MOVX A,R0;MOVX DPTR,A;,(SP)(SP)+1,(SP)(PSW),(65H)A,A中的值是47H,3AH65H,外RAM的(65H)A,A外RAM的2000H单元,
7、2023/11/18,12,3.2.4 直接寻址指令中直接给出操作数所在存储单元的地址。可访问 3 种RAM空间:(1)内部数据存储器的低 128 个字节单元(00H7FH)。(2)特殊功能寄存器(只能用直接寻址方式进行访问)(3)位地址空间。可访问 ROM空间:程序长转移/绝对转移,长子调/绝对子调,2023/11/18,13,LJMP addr16/AJMP addr11LCALL addr16/ACALL addr11MOV A,3AH;(3AH)AMOV P1,R0;(R0)P1口INC 58H;(58H)+1 58HSUBB A,TL0;(A)-(TL0)A,a.低128单元,在指令
8、中直接以单元地址形式出现;b.专用寄存器,可以单元地址给出,也可以寄存器符号形式给出。,2023/11/18,14,3.2.5 基址寄存器加变址寄存器间接寻址以基址寄存器的内容加上变址寄存器的内容作为操作数的地址。基址寄存器:PC(16位)、DPTR(16位)变址寄存器:A MOVCA,A+DPTR;(A)(A)+(DPTR)MOVCA,A+PC;(A)(A)+(PC)注意:PC为当前值(开始执行本条指令时候PC已指向下一条指令的首地址)仅适用于程序存储器ROM,查表,2023/11/18,15,3.2.6 相对寻址以当前的PC值加上指令中给出的地址偏移量rel而形成的实际地址。目的地址=当前
9、PC+rel rel:-128+127 用补码表示 相对寻址只出现在相对转移指令中(只能适用于程序存储器ROM)。SJMP rel,2023/11/18,16,变址寻址中的内容是无符号的数。相对寻址中偏移量是有符号的数,以补码形式给出的。故转移的目标地址在当前PC值的128127之间。,与变址寻址的区别,2023/11/18,17,3.3 数据传送类指令,数据传送类指令有29条,是指令系统中数量最多、使用也最多的指令,它可以进一步细分为:以累加器A为一方的传送指令(6条)不以累加器A为一方的传送指令(5条)用立即数置数的指令(5条)访问片外RAM的传送指令(4条)基址寄存器加变址寄存器间址指令
10、(2条)交换指令(5条)进栈出栈指令(2条),2023/11/18,18,3.3.1 以累加器A为一方的传送指令(6条)实现以累加器为一方,以某工作寄存器、某片内RAM单元、某专用寄存器为另一方的数据传送。(1)某工作寄存器内容送累加器指令MOV A,Ri单字节指令。Ri可为R0R7,机器码相应为E8HEFH。MCS-51系列单片机的工作寄存器有4个区同为R0R7,依次是片内RAM的00H07H、08H0FH、10H17H、18H1FH等单元,确切地址根据PSW中第4、第3位(RS1、RS0)的设置而定。,2023/11/18,19,(2)累加器内容送某工作寄存器指令 MOV Ri,A单字节指
11、令,Ri可为R0R7,机器码相应为F8HFFH。某工作寄存器在片内RAM中的确切地址也决定于PSW中第四、第三位的没定值。,2023/11/18,20,(3)某片内RAM单元内容送累加器指令 MOV A,Rj单字节指令。Rj可为R0、R1,机器码相应为E6H、E7H。在片内RAM中的确切地址由RS1、RS0的设置决定。(4)累加器内容送某片内RAM单元指令 MOV Rj,A单字节指令。Rj可为R0、R1,机器码相应F6H、F7H。,2023/11/18,21,(5)某片内RAM单元(低128字节)内容或某专用寄存器内容送累加器指令 MOV A,direct双字节指令。机器码的第一字节为E5H,
12、第二字节为直接寻址字节的直接地址(8位)。如直接地址为80H、90H、A0H或B0H,也即直接寻址字节是P0、P1、P2或P3口寄存器,本指令便成为输入指令。(6)累加器内容送某片内洲单元(低128字节)或某专用寄存器指令 MOV direct,A双字节指令。机器码的第一字节为F5H,第二字节为直接寻址字节的直接地址(8 位)。如直接地址为80H、90H、A0H、或B0H,本指令便成为输出指令。,2023/11/18,22,3.3.2 不以累加器A为一方的传送指令(5条)实现以直接寻址字节为一方,以某工作寄存器、某片内RAM单元或某专用寄存器为另一方的直接数据传送。(1)某工作寄存器内容送某片
13、内RAM单元(低128字节)或某专用寄存器指令 MOV direct,Ri 双字节指令。随着i=07的不同,机器码的第一字节相应为88H8FH;第二字节为直接寻址字节的直接地址,2023/11/18,23,(2)某片内RAM单元(低128字节)内容或某专用寄存器内容送某工作寄存器指令 MOV Ri,direct双字节指令。随着i值自07的不同。机器码的第一字节相应为A8HAFH,第二字节为直接地址。(3)某片内RAM单元内容送另一片内RAM单元(低128字节)或某专用寄存器指令 MOV direct,Rj双字节指令。按j0、l的不同机器码的第一字节相应为86H、87H;第二字节为直接地址。,2
14、023/11/18,24,(4)某片内RAM单元(低l 28字节)内容或某专用寄存器内容送另一片内RAM单元指令 MOV Rj,direct双字节指令。按j0、1的不同,机器码的第一字节相应为A6H、A7H;第二字节为直接地址。(5)某直接寻址字节内容送另直接寻址字节指令 MOV direct,direct三字节指令。机器码的第一字节为85H;第二字节为源直接地址;第三字节为目的直接地址。,2023/11/18,25,3.3.3 用立即数置数的指令(5条)可用立即数分别对累加器、某工作寄存器、某片内RAM单元、某直接寻址字节、以及数据指针专用寄存器置数。(1)立即数送累加器指令 MOV A,#
15、data 双字节指令。机器码的第一字节为74H;第二字节为立即数。(2)立即数送某工作寄存器指令 MOV Ri,#data 双字节指令。机器码的第一字节因i值07不同,相应为78H7FH;第二字节为立即数。,2023/11/18,26,(3)立即数送某片内RAM单元指令 MOV Rj,#data双字节指令。机器码的第一字节因j值为0、1不同,相应为76H、77H;第二字节为立即数。(4)立即数送某直接寻址字节指令 MOV direct,#data 三字节指令。机器码的第一字节为75H;第二字节为直接地址。第三字节为立即数。,2023/11/18,27,(5)16位立即数送数据指针寄存器指令 M
16、OV DPTR,#data16三字节指令。因DPTR是16位寄存,故对它置数要用16位立即数。机器码的第一字节为90H;第二字节为高8位立即数;第三字节为低8位立即数。这是MCS-51系列单片机指令系统中唯一的一条16位数据传送指令。,2023/11/18,28,3.3.4 访问片外RAM的传送指令访问片内RAM用MOV指令,访问片外RAM用MOVX指令。本小类指令也都以A为一方。自RAM向A传送数据的指令其实质是对RAM进行读操作,自A向RAM传送数据的指令其实质是对RAM进行写操作。MOVX类指令共有4条。2条通过工作寄存器问址对RAM进行操作,寻址范围为256个字节;另2条通过数据指针间
17、址对RAM进行操作,寻址范围大达64K字节。,2023/11/18,29,(1)某片外RAM单元(8位地址)内容送累加器指令MOVX A,Rj单字节指令。根据j0、1的不同,机器码相应为E2H、E3H。(2)累加器内容送某片外RAM单元(8位地址)指令 MOVX Rj,A单字节指令。根据j0、1的不同,机器码相应为F2H、F3H。,2023/11/18,30,(3)某片外RAM单元(16位地址)内容送累加器指令 MOVX A,DPTR单字节指令。机器码为E0H。(4)累加器内容送某片外RAM单元(16位地址)指令 MOVX DPTR,A单字节指令。机器码为F0H。,2023/11/18,31,
18、例 将片外RAMl20单元的内容传送到片外RAM l20H单元。下列程序可满足要求:MOV DPTR,#0120H MOV R0,#78H MOVX A,R0 MOVX DPTR,A例 将片内RAMl20单元的内容传送到片内RAM 240单元。这只需要一条指令:MOV F0H,78H,2023/11/18,32,本小类第一、三条指令是读某片外RAM单元的内容,第二、四条指令是将内容写到某片外RAM单元中去,当某接口芯片其端口地址占用着片外RAM某一单元的地址时,则读、写该单元的指令实质上就是输入、输出指令,该接口芯片则成为P0、P1、P2、P3口之外的扩展IO接口。,2023/11/18,33
19、,3.3.5 基址寄存器加变址寄存器间址指令(1)以数据指针寄存器与累加器内容的和为地址读取内容,传送到累加器的指令 MOVC A,A十DPTR单字节指令。机器码为93H。执行的操作为:(A)(A)十(DPTR)。上列操作表达式中括号()表示“其中的内容”;箭头表示传送方向,箭头右边为所传数据的源地址,箭头左边为目的地址。,2023/11/18,34,(2)以程序计数器与累加器内容的和为地址读取内容,传送到累加器的指令 MOVC A,A十PC单字节指令。机器码为83H。执行的操作为(PC)(PC)十1,(A)(A)十(PC)本小类两条指令多用于查表程序。,2023/11/18,35,3.3.6
20、 交换指令数据传送类指令一般都是将操作数自源地址传送到目的地址;指令执行后,源地址的操作数不变,目的地址的操作数则修改为源地址的操作数。交换指令数据作双向传送,涉及传送的双方互为源地址、目的地址,指令执行后每方的操作数都修改为另一方的操作数,因此两操作数都末冲走、丢失。,2023/11/18,36,(1)某工作寄存器内容与累加器内容交换指令 XCH A,Ri单字节指令。随着i0、1、2、7的不同,机器码相应为C8H、C9H、CAH、CFH。(2)某片内RAM单元内容与累加器内容交换指令XCH A,Rj单字节指令。当j0,机器码为C6H;当j1,机器码为C7H。,2023/11/18,37,(3
21、)某片内RAM单元(低128字节)内容或专用寄存器内容与累加器内容交换指令XCH A,direct双字节指令。机器码的第一字节为C5H,第二字节为直接地址。(4)某片内RAM单元内容的低半字节与累加器内容的低半字节交换指令 XCHD A,Rj单字节指令。如j0,机器码为D6H;j1,机器码为D7H。,2023/11/18,38,(5)累加器内容的低半字节与高半字节交换指令 SWAP A单字节指令。机器码为C4H。例 R0的内容为20H,片内RAM20H单元的内容为75H,累加器内容为36H,则执行XCH A,R0指令后片内RAM20H单元的内容为36H,累加器内容为75H。如执行XCHD A,
22、R0指令,则片内RAM20H单元的内容为76H,累加器内容为35H。如执行SWAP A指令,累加器内容变为63H。,2023/11/18,39,3.3.7 进栈出栈指令(2条)(1)某直接寻址字节内容送堆栈(栈顶)指令(又称进栈指令或压入指令)PUSH direct双字节指令。机器码的第一字节为C0H;第二字节为直接地址。指令执行的操作为:(SP)(SP)十1;(SP)(direct)。进栈指令用于保存某片内RAM单元(低128字节)或某专用寄存器的内容.,2023/11/18,40,(2)堆栈(栈顶)内容进某直接寻址字节指令(又称出栈指令或弹出指令)POP direct双字节指令。机器码的第
23、一字节为D0H;第二字节为直接地址。指令执行的操作为:(direct)(SP);(SP)(SP)一1。出栈指令用于恢复某片内RAM单元(低128字节)或某专用寄存器的内容,2023/11/18,41,3.4 算术操作类指令,算术操作类指令有24条,可进一步细分为指令、减法指令、加1指令、减1指令与其它算术操作(含乘、除)指令等5个小类。本类指令除乘法指令MUL AB、除法指令DIV AB和数据指针加1指令INC DPTR外其余各条的执行时间都只1个机器周期。,2023/11/18,42,3.4.1 加法指令(8条)均以累加器内容作为相加的一方,加后的和都送回累加器中。(1)某工作寄存器与累加器
24、内容相加指令 ADD A,Ri单字节指令。机器码为28H2FH,小的机器码依次对应于小的i值。(2)某片内RAM单元与累加器内容相加指令 ADD A,Rj单字节指令。按j0、1的不同,机器码相应为26H、27H。,2023/11/18,43,(3)某直接寻址字节与累加器内容相加指令 ADD A,direct双字节指令。机器码的第一字节为25H;第二字节为直接地址。(4)立即数与累加器内容相加指令 ADD A,#data双字节指令。机器码的第一字节为24H,第二字节为立即数。,2023/11/18,44,(5)某工作寄存器与累加器内容带进位位相加指令ADDC A,Ri单字节指令。机器码为38H3
25、FH,小的机器码依次对应于小的i值。(6)某片内RAM单元与累加器内容带进位位相加指令 ADDC A,Rj单字节指令。按j0、1的不同,机器码相应为36H、37H。,2023/11/18,45,(7)某直接寻址字节与累加器内容带进位位相加指令 ADDC A,direct双字节指令。机器码的第一字节为35H;第二字节为直接地址。(8)立即数与累加器内容带进位位相加指令 ADDC A,#data双字节指令。机器码的第一字节为34H;第二字节为立即数。(5)(8)条指令是两个操作效且带进位位相加。遇多字节效加法、除最低字节外,应采用带进位位相加的加法指令。,2023/11/18,46,加法指令执行后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 指令系统
链接地址:https://www.31ppt.com/p-6617875.html