第3章单片机的指令系统.ppt

上传人:夺命阿水 文档编号:740122 上传时间:2023-11-02 格式:PPT 页数:112 大小:613KB
返回 下载 相关 举报
第3章单片机的指令系统.ppt_第1页
第1页 / 共112页
第3章单片机的指令系统.ppt_第2页
第2页 / 共112页
第3章单片机的指令系统.ppt_第3页
第3页 / 共112页
第3章单片机的指令系统.ppt_第4页
第4页 / 共112页
第3章单片机的指令系统.ppt_第5页
第5页 / 共112页
点击查看更多>>
资源描述

《第3章单片机的指令系统.ppt》由会员分享,可在线阅读,更多相关《第3章单片机的指令系统.ppt(112页珍藏版)》请在课桌文档上搜索。

1、2023/11/2,1,第三章 单片机的指令系统,2023/11/2,2,3.1 指令与指令格式,3.1.1 指令计算机的指令是指使计算机执行各种操作的命令,它是计算机的控制信息。一台计算机所能执行的全部指令的合集称为这台计算机的指令系统。它集中地反映了微处理器的硬件功能和属性。不同种类的微处理器具有不同的指令系统。通常,指令系统包括指令格式、寻址方式、指令种类与指令功能等内容。这些也是读者必须熟悉并掌握的核心问题。,2023/11/2,3,3.1.2 机器语言指令格式机器语言或称为二进制代码语言,计算机可以直接识别。计算机能直接识别和执行的指令是用二进制编码表示的机器指令。机器语言对不同型号

2、的计算机来说一般是不同的。机器语言指令的一般格式:操作码 操作数操作码字段用来规定该指令要执行的操作,不可缺少。寻址方式码字段表示该指令的操作数应按哪一种寻址方式来寻找。形式地址码字段,表示操作数所在单元的形式地址。,2023/11/2,4,3.1.3 汇编语言指令格式汇编语言的实质和机器语言是相同的,但采用英文缩写的标识符,更容易识别记忆。这种机器指令称为汇编语言指令。MCS-51汇编语言的语句格式表示如下:标号:操作码操作数;注释操作码:是由助记符表示的字符串,表示指令的一个功能操作数:是指参加操作的数据或者是数据地址。标号:用来表示子程序名称或程序执行条件跳转时的程序跳转地址,实际上是表

3、示一个地址值。,2023/11/2,5,在80C51指令系统中,操作数可以是1、2、3个,也可以没有。不同功能的指令,操作数作用也不同。例如,传送类指令多数有两个操作数,写在左面的称为目的操作数(表示操作结果存放的单元地址),写在右面的称为源操作数(指出操作数的来源)。操作码与操作数之间必须用空格分开,操作数与操作数之间必须用逗号“,”分开。带方括号的项可有可无,称为可选项。由指令格式可见,操作码是指令的核心,不可缺少。,2023/11/2,6,3.1.4 汇编语言指令系统MCS-51汇编语言指令系统在存贮空间和执行时间方面具有较高的效率,编成的程序占用内存单元少,执行也很决捷,与其应用范围的

4、要求很相适应。,2023/11/2,7,3.2 寻址方式,计算机传送数据、执行算术操作、逻辑操作等都要涉及操作数。一条指令的执行,先要从操作数所在地址寻找到与本指令有关的操作数,这便涉及到寻址。MCS-51系列单片机的指令系统含有立即寻址、寄存器寻址、寄存器间接寻址、直接寻址、基址寄存器加变址寄存器间接寻址、相对寻址等寻址方式。,2023/11/2,8,3.2.1 立即寻址 指令中给出实际操作数据(立即数),一般用于为寄存器或存储器赋常数初值。8位立即数:MOV A,#40H;40H A 16位立即数:MOV DPTR,#2100H;2100H DPTRMOV A,#data(8b);MOV

5、DPTR,#data(16b);书写单片机的指令时,为了容易辨识是立即数,规定在它的前面加一“#”符号作为前缀。,2023/11/2,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/2,10,3.2.3 寄存器间接寻址 指令中寄存器中的内容不是操作数本身,而是操作数

6、的地址,该地址的内容才是真正的操作数。存器间接寻址符号为“”,2023/11/2,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单元,2023/11/2,1

7、2,3.2.4 直接寻址指令中直接给出操作数所在存储单元的地址。可访问 3 种RAM空间:(1)内部数据存储器的低 128 个字节单元(00H7FH)。(2)特殊功能寄存器(只能用直接寻址方式进行访问)(3)位地址空间。可访问 ROM空间:程序长转移/绝对转移,长子调/绝对子调,2023/11/2,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/2,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/2,15,3.2.6 相对寻址以当前的PC值加上指令中给出的地址偏移量rel而形成的实际地址。目的地址=当前PC+rel rel:-128

9、+127 用补码表示 相对寻址只出现在相对转移指令中(只能适用于程序存储器ROM)。SJMP rel,2023/11/2,16,变址寻址中的内容是无符号的数。相对寻址中偏移量是有符号的数,以补码形式给出的。故转移的目标地址在当前PC值的128127之间。,与变址寻址的区别,2023/11/2,17,3.3 数据传送类指令,数据传送类指令有29条,是指令系统中数量最多、使用也最多的指令,它可以进一步细分为:以累加器A为一方的传送指令(6条)不以累加器A为一方的传送指令(5条)用立即数置数的指令(5条)访问片外RAM的传送指令(4条)基址寄存器加变址寄存器间址指令(2条)交换指令(5条)进栈出栈指

10、令(2条),2023/11/2,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/2,19,(2)累加器内容送某工作寄存器指令 MOV Ri,A单字节指令,Ri可为R0R7,机器码相应为F8

11、HFFH。某工作寄存器在片内RAM中的确切地址也决定于PSW中第四、第三位的没定值。,2023/11/2,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/2,21,(5)某片内RAM单元(低128字节)内容或某专用寄存器内容送累加器指令 MOV A,direct双字节指令。机器码的第一字节为E5H,第二字节为直接寻址字节的直接地址(8位)。

12、如直接地址为80H、90H、A0H或B0H,也即直接寻址字节是P0、P1、P2或P3口寄存器,本指令便成为输入指令。(6)累加器内容送某片内洲单元(低128字节)或某专用寄存器指令 MOV direct,A双字节指令。机器码的第一字节为F5H,第二字节为直接寻址字节的直接地址(8 位)。如直接地址为80H、90H、A0H、或B0H,本指令便成为输出指令。,2023/11/2,22,3.3.2 不以累加器A为一方的传送指令(5条)实现以直接寻址字节为一方,以某工作寄存器、某片内RAM单元或某专用寄存器为另一方的直接数据传送。(1)某工作寄存器内容送某片内RAM单元(低128字节)或某专用寄存器指

13、令 MOV direct,Ri 双字节指令。随着i=07的不同,机器码的第一字节相应为88H8FH;第二字节为直接寻址字节的直接地址,2023/11/2,23,(2)某片内RAM单元(低128字节)内容或某专用寄存器内容送某工作寄存器指令 MOV Ri,direct双字节指令。随着i值自07的不同。机器码的第一字节相应为A8HAFH,第二字节为直接地址。(3)某片内RAM单元内容送另一片内RAM单元(低128字节)或某专用寄存器指令 MOV direct,Rj双字节指令。按j0、l的不同机器码的第一字节相应为86H、87H;第二字节为直接地址。,2023/11/2,24,(4)某片内RAM单元

14、(低l 28字节)内容或某专用寄存器内容送另一片内RAM单元指令 MOV Rj,direct双字节指令。按j0、1的不同,机器码的第一字节相应为A6H、A7H;第二字节为直接地址。(5)某直接寻址字节内容送另直接寻址字节指令 MOV direct,direct三字节指令。机器码的第一字节为85H;第二字节为源直接地址;第三字节为目的直接地址。,2023/11/2,25,3.3.3 用立即数置数的指令(5条)可用立即数分别对累加器、某工作寄存器、某片内RAM单元、某直接寻址字节、以及数据指针专用寄存器置数。(1)立即数送累加器指令 MOV A,#data 双字节指令。机器码的第一字节为74H;第

15、二字节为立即数。(2)立即数送某工作寄存器指令 MOV Ri,#data 双字节指令。机器码的第一字节因i值07不同,相应为78H7FH;第二字节为立即数。,2023/11/2,26,(3)立即数送某片内RAM单元指令 MOV Rj,#data双字节指令。机器码的第一字节因j值为0、1不同,相应为76H、77H;第二字节为立即数。(4)立即数送某直接寻址字节指令 MOV direct,#data 三字节指令。机器码的第一字节为75H;第二字节为直接地址。第三字节为立即数。,2023/11/2,27,(5)16位立即数送数据指针寄存器指令 MOV DPTR,#data16三字节指令。因DPTR是

16、16位寄存,故对它置数要用16位立即数。机器码的第一字节为90H;第二字节为高8位立即数;第三字节为低8位立即数。这是MCS-51系列单片机指令系统中唯一的一条16位数据传送指令。,2023/11/2,28,3.3.4 访问片外RAM的传送指令访问片内RAM用MOV指令,访问片外RAM用MOVX指令。本小类指令也都以A为一方。自RAM向A传送数据的指令其实质是对RAM进行读操作,自A向RAM传送数据的指令其实质是对RAM进行写操作。MOVX类指令共有4条。2条通过工作寄存器问址对RAM进行操作,寻址范围为256个字节;另2条通过数据指针间址对RAM进行操作,寻址范围大达64K字节。,2023/

17、11/2,29,(1)某片外RAM单元(8位地址)内容送累加器指令MOVX A,Rj单字节指令。根据j0、1的不同,机器码相应为E2H、E3H。(2)累加器内容送某片外RAM单元(8位地址)指令 MOVX Rj,A单字节指令。根据j0、1的不同,机器码相应为F2H、F3H。,2023/11/2,30,(3)某片外RAM单元(16位地址)内容送累加器指令 MOVX A,DPTR单字节指令。机器码为E0H。(4)累加器内容送某片外RAM单元(16位地址)指令 MOVX DPTR,A单字节指令。机器码为F0H。,2023/11/2,31,例 将片外RAMl20单元的内容传送到片外RAM l20H单元

18、。下列程序可满足要求:MOV DPTR,#0120H MOV R0,#78H MOVX A,R0 MOVX DPTR,A例 将片内RAMl20单元的内容传送到片内RAM 240单元。这只需要一条指令:MOV F0H,78H,2023/11/2,32,本小类第一、三条指令是读某片外RAM单元的内容,第二、四条指令是将内容写到某片外RAM单元中去,当某接口芯片其端口地址占用着片外RAM某一单元的地址时,则读、写该单元的指令实质上就是输入、输出指令,该接口芯片则成为P0、P1、P2、P3口之外的扩展IO接口。,2023/11/2,33,3.3.5 基址寄存器加变址寄存器间址指令(1)以数据指针寄存器

19、与累加器内容的和为地址读取内容,传送到累加器的指令 MOVC A,A十DPTR单字节指令。机器码为93H。执行的操作为:(A)(A)十(DPTR)。上列操作表达式中括号()表示“其中的内容”;箭头表示传送方向,箭头右边为所传数据的源地址,箭头左边为目的地址。,2023/11/2,34,(2)以程序计数器与累加器内容的和为地址读取内容,传送到累加器的指令 MOVC A,A十PC单字节指令。机器码为83H。执行的操作为(PC)(PC)十1,(A)(A)十(PC)本小类两条指令多用于查表程序。,2023/11/2,35,3.3.6 交换指令数据传送类指令一般都是将操作数自源地址传送到目的地址;指令执

20、行后,源地址的操作数不变,目的地址的操作数则修改为源地址的操作数。交换指令数据作双向传送,涉及传送的双方互为源地址、目的地址,指令执行后每方的操作数都修改为另一方的操作数,因此两操作数都末冲走、丢失。,2023/11/2,36,(1)某工作寄存器内容与累加器内容交换指令 XCH A,Ri单字节指令。随着i0、1、2、7的不同,机器码相应为C8H、C9H、CAH、CFH。(2)某片内RAM单元内容与累加器内容交换指令XCH A,Rj单字节指令。当j0,机器码为C6H;当j1,机器码为C7H。,2023/11/2,37,(3)某片内RAM单元(低128字节)内容或专用寄存器内容与累加器内容交换指令

21、XCH A,direct双字节指令。机器码的第一字节为C5H,第二字节为直接地址。(4)某片内RAM单元内容的低半字节与累加器内容的低半字节交换指令 XCHD A,Rj单字节指令。如j0,机器码为D6H;j1,机器码为D7H。,2023/11/2,38,(5)累加器内容的低半字节与高半字节交换指令 SWAP A单字节指令。机器码为C4H。例 R0的内容为20H,片内RAM20H单元的内容为75H,累加器内容为36H,则执行XCH A,R0指令后片内RAM20H单元的内容为36H,累加器内容为75H。如执行XCHD A,R0指令,则片内RAM20H单元的内容为76H,累加器内容为35H。如执行S

22、WAP A指令,累加器内容变为63H。,2023/11/2,39,3.3.7 进栈出栈指令(2条)(1)某直接寻址字节内容送堆栈(栈顶)指令(又称进栈指令或压入指令)PUSH direct双字节指令。机器码的第一字节为C0H;第二字节为直接地址。指令执行的操作为:(SP)(SP)十1;(SP)(direct)。进栈指令用于保存某片内RAM单元(低128字节)或某专用寄存器的内容.,2023/11/2,40,(2)堆栈(栈顶)内容进某直接寻址字节指令(又称出栈指令或弹出指令)POP direct双字节指令。机器码的第一字节为D0H;第二字节为直接地址。指令执行的操作为:(direct)(SP);

23、(SP)(SP)一1。出栈指令用于恢复某片内RAM单元(低128字节)或某专用寄存器的内容,2023/11/2,41,3.4 算术操作类指令,算术操作类指令有24条,可进一步细分为指令、减法指令、加1指令、减1指令与其它算术操作(含乘、除)指令等5个小类。本类指令除乘法指令MUL AB、除法指令DIV AB和数据指针加1指令INC DPTR外其余各条的执行时间都只1个机器周期。,2023/11/2,42,3.4.1 加法指令(8条)均以累加器内容作为相加的一方,加后的和都送回累加器中。(1)某工作寄存器与累加器内容相加指令 ADD A,Ri单字节指令。机器码为28H2FH,小的机器码依次对应于

24、小的i值。(2)某片内RAM单元与累加器内容相加指令 ADD A,Rj单字节指令。按j0、1的不同,机器码相应为26H、27H。,2023/11/2,43,(3)某直接寻址字节与累加器内容相加指令 ADD A,direct双字节指令。机器码的第一字节为25H;第二字节为直接地址。(4)立即数与累加器内容相加指令 ADD A,#data双字节指令。机器码的第一字节为24H,第二字节为立即数。,2023/11/2,44,(5)某工作寄存器与累加器内容带进位位相加指令ADDC A,Ri单字节指令。机器码为38H3FH,小的机器码依次对应于小的i值。(6)某片内RAM单元与累加器内容带进位位相加指令

25、ADDC A,Rj单字节指令。按j0、1的不同,机器码相应为36H、37H。,2023/11/2,45,(7)某直接寻址字节与累加器内容带进位位相加指令 ADDC A,direct双字节指令。机器码的第一字节为35H;第二字节为直接地址。(8)立即数与累加器内容带进位位相加指令 ADDC A,#data双字节指令。机器码的第一字节为34H;第二字节为立即数。(5)(8)条指令是两个操作效且带进位位相加。遇多字节效加法、除最低字节外,应采用带进位位相加的加法指令。,2023/11/2,46,加法指令执行后将影响程序状态字中的许多标志位:相加后整个字节有溢出,C将置位,否则C复位;低半字节有溢出,

26、AC将置位,否则AC复位;最高位和次高位不同时进位,OV将置位,否则OV复位。无符号数相加,和的溢出与C置位是统一的;带符号数相加,和的溢出是指和127或128,另用OV置位来表示。,2023/11/2,47,当两个同符号数相加时相会有溢出,例如:此时最高位无进位,C=0;次高位有进位,满足员高位和次高位不同时进位,OV置位。这反映了和128,两负数相加、和却为负(最高位为0)的情形。,2023/11/2,48,又如:此时最高位有进位,C1;次高位无进位,满足最高位和次高位不同时进位OV置位。这反映了和127,两负数相加、和却为负(最高位为1)的情形。,2023/11/2,49,例 累加器内容

27、为6AH,R1内容为43H。执行指令ADD A,R1后,A的内容为ADH,C复位,AC复位,OV置位。如原操作数6AH、43H为无符号数,则加得的结果为ADH无误。如原操作数是带符号数,则106加67等于173,173127,有了溢出。此时所得结果果不能读作83,应以C为符号位、整个字节为数,读作173。,2023/11/2,50,3.4.2 减法指令(4条)均以累加器内容为被减数,减后的差都送回累加器。(1)累加器内容减某工作寄存器与进位位内容指令 SUBB A,Ri单字节指令。机器码为98H9FH,小的机器码依次对应于小的i值(2)累加器内容减某片内RAM单元与进位位内容指令 SUBB A

28、,Rj单字节指令。按j0、1的不同,机器码相应为96H、97H。,2023/11/2,51,(3)累加器内容减某直接寻址字节与进位位内容指令 SUBB A,diret双字节指令。机器码的第一字节为95H;第二字节为直接地址。(4)累加器内容减立即数与进位位内容指令 SUBB A,#data双字节指令。机器码的第一字节为94H;第二字节为立即数。它们都是除两个操作数外,计及进位(对减法实际是借位)位的减法指令,故可用于多字节数减法。,2023/11/2,52,减法指令执行后都持影响标志位:如不够减,进位位置位(表示借位),够减,进位位复位;低半字节不够减,AC置位(表示借位);够减,AC复位;相

29、减时最高位和次高位不同时借位,OV置位;否则OV复位。OV在做带符号数减法时有用。无符号数相减,不够减时向高字节借位,与C置l是统一的,带符号数相减,差的溢出是指差127或128,另用OV置位来表示。当两个异符号数相减时差会有溢出.,2023/11/2,53,例如:此时最高位有借位,C1;次高位无借位,满足最高位和次高位不同时借位,OV置位。这反映映了差十127,正数减负数、差却为负(最高位为1)的情形。又如:此时最高位无借位,C0;次高位有借位,满足最高位和次高位不同时借位,OV置位。这反映了差128,负数减正数、差却为正(最高位为0)的情形。,2023/11/2,54,3.4.3 加1指令

30、(5条)(1)累加器内容加1指令 INC A单字节指令。机器码为04H。(2)某工作寄存器内容加1指令INC Ri单字节指令。机器码为08H0FH,小的机器码依次对应于小的i值。(3)某片内RAM单元内容加1指令 INC Rj单字节指令。因j0、1的不同,机器码相应为06H、07H。,2023/11/2,55,(4)某直接寻址字节内容加1指令 INC direct双字节指令。机器码的第一字节为05H;第二字节为直接地址。(5)数据指针寄存器内容加1指令 INC DPTR单字节指令。机器码为A3H。本指令的执行时间需2个机器周期。加1小类指令执行后不影响标志位。,2023/11/2,56,3.4

31、.4 减1指令(4条)(1)累加器内容减1指令 DEC A单字节指令。机器码为14H。(2)某工作寄存器内容减1指令 DEC Ri单字节指令。机器码为18H一1FH,小的机器码依次对应于小的1值。,2023/11/2,57,(3)某片内RAM单元内容减1指令 DEC Rj单字节指令。因j0、1的不同,机器码相应为16H、17H。(4)某直接寻址字节内容减1指令 DEC direct双字节指令。机器码的第一字节为15H;第二字节为直接地址。减1小类指令执行后不影响标志位。,2023/11/2,58,3.4.5 其他算术操作指令(1)累加器内容十进制调整指令 DA A单字节指令。机器码为D4H。该

32、指令可使加法运算所得存于累加器A中的和进行十进制调整。执行的具体操作是:低半字节的值9或AC为1时低半字节加6;高半字节的值9或C为1时高半字节加6。十进制调整指令执行的结果根据有无进位将使进位位相应置位或复位。,2023/11/2,59,(2)乘法指令MUL AB单字节指令。机器码为A4H。但执行时间要4个机器周期。该指令可使放在累加器A和寄存器B中的两个待乘数相乘;乘积的字长将加倍,其高位在B中,低8位在A中。指令执行后将影响标志位:C复位;OV当积255时置位,否则复位。,2023/11/2,60,(3)除法指令 DIV AB单字节指令。机器码为B4H。执行时间为4个机器周期。该指令可使

33、放在累加器A中的被除数,为寄存器B中的除数相除;除得的商在A中,余数在B中。指令执行后将影响标志位:一般情况下C与OV均复位,但除数为0时OV将置位。,2023/11/2,61,例 BCD码加法。15十28,其结果为43。但计算机按16进制做加法,看作15H十28H=3DH。如在加法指令后添用一条DA A指令,则执行该指令时因低半字节D9,将另加6而成为3,并向高半字节进1使成为4,最后可得到BCD码的和,也即正确的结果43D。又如89D十28D,结果应为117D.但计算机算得为B1H。如加法指令后添用DA A指令,则因和的低半字节有溢出,AC为1,将另加6而成为7;高半字节因B9,也另加6而

34、成为1,且进位使进位位C置1,最后得到正确的结果117D。,2023/11/2,62,在MCS-51系列单片机的指令系统中,影响标志位的指令有三类:算术操作类指令中的ADD、ADDC、SUBB、MUL、DIV、DA指令。操作功能与C有关的指令,如RRC、RLC、SETB C、CLR C、CPL C、MOV C,bit、ANL C,/bit、ORL C,bit、ORL C,/bit、等指令。CJNE指令。,2023/11/2,63,3.5 逻辑操作类指令,逻辑操作类指令有24条,可进一步细分为与指令、或指令、异或指令、A操作指令等4个小类。在所有逻辑操作类指令中,除三条3字节指令的执行时间为2个

35、机器周期外,其余各指令的执行时间均只需要1个机器周期。MCS-51系列单片机还有大量位逻辑操作指令。,2023/11/2,64,3.5.1 与指令(6条)(1)某工作寄存器内容和累加器内容相与指令 ANL A,Ri单字节指令。按i值依小到大的顺序,机器码相应为58H5FH(2)某片内洲单元内容和累加器内容相与指令 ANL A,Rj单字节指令。按j0或1,机器码相应为56H、57H。,2023/11/2,65,(3)某直接寻址字节内容和累加器内容相与指令 ANL A,direct双字节指令。机器码的第一字节为55H;第二字节为直接地址。(4)累加器内容和某直接寻址字节内容相与指令 ANL dir

36、ect,A双字节指令。机器码的第一字节为52H;第二字节为直接地址。,2023/11/2,66,(5)立即数和累加器内容相与指令 ANL A,#data双字节指令。机器码的第一字节为54H;第二字节为立即数。(6)立即数和直接寻址字节内容相与指令 ANL direct,#data三字节指令。机器码的第一字节为53H;第二字节为直接地址;第三字节为立即数。,2023/11/2,67,与指令常用于修改某工作寄存器、某片内RAM单元、某直接寻址字节(含P0、P1、P2、P3端口)或累加器本身的内容,控制修改的数或是累加器中内容(前4条指令),或是立即数(后2条指令)。修改的办法是:用控制修改数的0使

37、被修改数的相应位清零;用控制修改数的1使被修改数的相应位保持原值不变。例 ANL A,#38H 例 ANL PSW,#11100111B,2023/11/2,68,3.5.2 或指令(6条)(1)某工作寄存器内容和累加器内容相或指令 ORL A,Ri单字节指令。按i值依小到大的顺序,机器码相应为48H4FH。(2)某片内RAM单元内容和累加器内容相或指令 ORL A,Rj单字节指令。按j0或1,机器码相应为46H、47H。,2023/11/2,69,(3)某直接寻址字节内容和累加器内容相或指令 ORL A,direct双字节指令。机器码的第一字节为45H;第二字节为直接地址。(4)累加器内容和

38、某直接寻址字节内容相或指令 ORL direct,A双字节指令。机器码的第一字节为42H;第二字节为直接地址。,2023/11/2,70,(5)立即数和累加器内容相或指令 ORL A,#direct双字节指令。机器码的第一字节为44H;第二字节为立即数。(6)立即数和某直接寻址字节内容相或指令 ORL direct,#data三字节指令。机器码的第一字节为43H;第二字节为直接地址;第三字节为立即数。,2023/11/2,71,或指令也常用于修改某工作寄存器、某片内RAM单元、某直接寻址字节(合P0、P1、P2、P3端口)或累加器本身的内容,控制修改的数或是累加器中内容(前4条指令),或是立即

39、数(后2条指令)。修改的办法是:用控制修改数的1使被修改数的相应位置1;用控制修改数的0使被修改数的相应位保持原值不变。例如(A)12H,(R0)71H,(71H)55H,写出下列指令的机器码和执行结果 ORL A,R0 ORL A,R0。,2023/11/2,72,3.5.3 异或指令(6条)(1)某工作寄存器内容和累加器内容相异或指令 XRL A,Ri单字节指令。按i值依小到大的顺序,机器码相应为68H6FH(2)某片内RAM单元内容和累加器内容相异或指令 XRL A,Rj单字节指令。按j0或1,机器码相应为66H、67H。,2023/11/2,73,(3)某直接寻址字节内容和累加器内容相

40、异或指令 XRL A,direct双字节指令。机器码的第一字节为65H,第二字节为直接地址。(4)累加器内容和某直接寻址字节内容相异或指令 XRL direct,A双字节指令。机器码的第一字节为62H,第二字节为直接地址。,2023/11/2,74,(5)立即数和累加器内容相异或指令 XRL A,#data双字节指令。机器码的第一字节为64H;第二字节为立即数。(6)立即数和某直接寻址字节内容相异或指令 XRL direct,#data三字节指令。机器码的第一字节为63H,第二字节为直接地址;第三字节为立即数。,2023/11/2,75,异或指令也常用于修改某工作寄存器、某片内RAM单元、某宣

41、按寻址字节(含P0、P1、P2、P3端口)或累加器本身的内容,控制修改的数或是累加器中内容(前4条指令),或是立即数(后2条指令)。修改的办法是:用控制修改数的1使被修改数的相应位取反;用控制修改数的0使被修改数的相应位保持原值不变。例 指令XRL P1,#00110001B。,2023/11/2,76,3.5.4 操作指令(6条)除可使累加器内容取反、清零外,还可实现使累加器内容向左环移一位、向右环移一位、带进位位(作为最高位)向左环移一位、带进位位(作为员商位)向右环移一位等操作。(1)累加器内容取反指令 CPL A单字节指令。机器码为F4H。(2)累加器内容清零指令 CLR A单字节指令

42、。机器码为E4H。,2023/11/2,77,(3)累加器内容向左环移一位指令 RL A单字节指令。机器码为23H。(4)累加器内容向右环移一位指令 RR A单字节指令。机器码为03H。,2023/11/2,78,(5)累加器内容带进位位向左环移一位指令 RLC A单字节指令。机器码为33H。(6)累加器内容带进位位向右环移一位指令 RRC A单字节指令。机器码为13H。,2023/11/2,79,例 设(A)5AH、C1则执行指令 CPL A后,(A)A5H;执行指令 CLR A后,(A)0;执行指令 RL A后,(A)B4K;执行指令 RR A后,(A)2DH;执行指令 RLC A后,(A

43、)B5H;执行指令 RRC A后,(A)ADH。使内容的各位逐位左移一位相当于原内容乘2,使内容的各位逐位右移一位相当于原内容除2。,2023/11/2,80,3.6 程序转移类指令,程序转移类指可分为无条件转移指令、条件转移指令、调子指令等3个小类;另有一条NOP指令,在设计延时程序、拼凑延时时间时很有用,在程序等待或修改程序等场合也有用。除NOP指令执行时间为1个机器周期外,所有程序转移类指令的执行时间都是2个机器周期。,2023/11/2,81,3.6.1 无条件转移指令(4条)(1)绝对转移(2K地址内)指令 AJMP addr 11指令执行的操作为:(PC)(PC)2(PC100)a

44、ddr 11本指令为双字节指令,第一个操作表达式表示指令执行后PC值将加2;第二个操作表达式表示PC值的低11位将变更,程序的执行顺序将无条件转移,但高5位末变,也即末跨出原2KB地址范围,转移的范围只在PC当前值所指的2KB地址范围内。,2023/11/2,82,2023/11/2,83,由于实际存在着地址的高5位页数0将随着高5位有不同数值,对应着00H、08H、10H、l8H、20H、28H、30H、38H、EOH、E8H、FOH、F8H等共32种真实的页数;页数1对应着01H、09H、11H、19H、21H、29H、E1H、E9H、F1H、F9H等32种真实的页数;页数2对应着02H、

45、0AH、12H、1AH、22H、2AH、E2H、EAH、F2H、FAH等32种页数;页数7对应着07H、0FH、17H、1FH、E7H、EFH、F7H、FFH等32种页数,表3-5中的每一种页数实际都对应着32种真实的页数。,2023/11/2,84,(2)长转移(64K地址内)指令 LJMP addr 16三字节指令。机器码的第一字节为02H;第二字节为地址的高8位;第三字节为地址的低8位。(PC)(PC)3(PC)addr 16本指令可使程序的执行顺序在全64KB地址范围内无条件转移,但比AJMP指令多占1个字节,多用对节省存储空间不利。,2023/11/2,85,(3)相对短转移(128

46、127地址内)指令 SJMP rel双字节指令。机器码的第一字节为80H;第二字节为相对地址值,也称相对偏移量。指令执行的操作为:(PC)(PC)2(PC)(PC)相对地址表达式中相对地址值是一带符号的相对偏移量。故本指令在PC内容加2所指地址(已执行第一条操作表达式)的基础上,可以128127为偏移量,在一页地址(前、后各半页)范围内实现相对短转移。,2023/11/2,86,例 写出指令SJMP 的机器码,并剖析执行该指令的结果。本例所用符号(或)般指“本指令所在的首址”,程序仍转移回此指令继续执行,于是将不断地执行这一指令,计算机不做其它工作,进入等待状态。因为执行指令的第一个操作表达式

47、PC内容将加2;而执行指令的第二个操作表达式后希望PC恢复原来值,所以PC内容应减2。可见相对地址值为FEH。指令的机器码为80H、FEH。,2023/11/2,87,(4)相对长转移(64KB地址内)指令 JMP ADPTR单字节指令。机器码为73H。指令执行的操作为:(PC)(A)(DPTR)本指令以DPTR寄存器内容为基址,以累加器内容为相对偏移量,在全64KB地址范围内无条件转移。指令的执行结果不会改变DPTR及A中原来的内容。,2023/11/2,88,例 已知累加器A的内容为0、2、4、6、8五个偶数中的一个,又标号TAB的真实地址为1800H,试剖析下列程序段的执行结果:MOV

48、DPTR,TAB JMP A+DPTR 1800TAB:AJMP 100HAJMP 200HAJMP 300HAJMP 400HAJMP 500H,2023/11/2,89,3.6.2 条件转移指令(8条)在满足条件的情形下才程序转移;条件如不满足,仍按原来顺序继续执行。故称为条件转移指令,或判跳指令。(1)累加器内容为零转移指令 JZ rel双字节指令。机器码的第一字节为60H;第二字节为相对地址。(2)累加器内容不为零转移指令 JNZ rel双字节指令,机器码的第一字节为70H;第二字节为相对地址。,2023/11/2,90,(3)累加器内容与某片内RAM单元(低128字节)或某专用寄存器

49、内容不等转移指令 CJNE A,direct,rel三字节指令。机器码的第一字节为B5H;第二字节为直接地址;第三字节为相对地址。(4)累加器内容与立即数不等转移指令 CJNE A,data,rel三字节指令。机器码的第一字节为B4H;第二字节为立即数;第三字节为相对地址。,2023/11/2,91,(5)某工作寄存器内容与立即数不等转移指令 CJNE A,#data,rel 三字节指令。机器码的第一字节因i值不同而为B8HBFH;第二字节为立即数;第三字节为相对地址。(6)某片内RAM单元与立即数不等转移指令 CJNE Rj,#data,rel三字节指令。机器码的第一字节因j值不同而为B6H

50、、B7H;第二字节为立即数;第三字节为相对地址。,2023/11/2,92,(7)某工作寄存器内容减1不为零转移指令 DJNE,Ri,rel双字节指令。机器码的第一字节因i值不同而为D8HDFH;第二字节为相对地址。(8)某片内RAM单元(低128字节)或某专用寄存器内容咸1不为尽转移指令 DJNZ direct,rel三字节指令,机器码的第一字节为D5H;第二字节为直接地址;第三字节为相对地址。,2023/11/2,93,相对转移指令在指令执行后的PC值基础上,按相对地址值进行转移。比较条件转移指令,既比较,又根据比较结果判跳,同时还影响标志位进位位c:后数前数时c置1,后数前数时c清零。可

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号