第三章MCS51指令系统.PPT

上传人:本田雅阁 文档编号:2556785 上传时间:2019-04-07 格式:PPT 页数:73 大小:806.01KB
返回 下载 相关 举报
第三章MCS51指令系统.PPT_第1页
第1页 / 共73页
第三章MCS51指令系统.PPT_第2页
第2页 / 共73页
第三章MCS51指令系统.PPT_第3页
第3页 / 共73页
亲,该文档总共73页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第三章MCS51指令系统.PPT》由会员分享,可在线阅读,更多相关《第三章MCS51指令系统.PPT(73页珍藏版)》请在三一文库上搜索。

1、第三章 MCS51指令系统,3.1 汇编语言指令格式 3.1.1 汇编语言格式 3.1.2 汇编伪指令 3.2 MCS-51的寻址方式 3.3 MCS-51指令系统 3.3.1 数据传送类指令 3.3.2 算术运算类指令 3.3.3 逻辑运算类指令 3.3.4 位操作类指令 3.3.5 控制转移类指令,计算机的指令系统是一套控制计算机操作的编码机器语言。计算机只能识别和执行机器语言的指令。但机器语言实在太枯燥,太难记忆了。,3.1 汇编语言指令格式,操作码:反映了指令的功能。 操作数:反映了指令的对象。,3.1.2 汇编伪指令,伪指令:汇编时不产生机器语言代码的指令,仅提供汇编控制信息。 一、

2、定位伪指令 ORG m m:一般为十六进制数。 m指出在该伪指令后的指令的汇编地址,即生成的机器指令起始存贮器地址。显然,当使用多条ORG m伪指令时,应注意其后生成的机器指令存放地址不应重叠。 eg: ORG 0 START: SJMP MAIN ORG 0BH LJMP PTFO ORG 40H MAIN:,二、定义字节伪指令 标号: DB X1、 X2 Xn,3.1.2 汇编伪指令,ORG 1000H DB 0AAH SJ-DATA: DB 25,25H ZFC-DATA: DB MCS-51 经汇编后,从地址1000H处存贮器的内容为: (1000H)= AAH (1001H)= 19

3、H (1002H)= 25H (1003H)= 4DH (1004H)= 43H (1005H)= 53H (1006H)= 2DH (1007H)= 35H (1008H)= 31H,三、字定义伪指令 标号: DW Y1、 Y2 Yn,3.1.2 汇编伪指令,通知汇编程序从当前ROM地址开始,保留存贮单元,并存入DW后面的数据。存放时高8位在前,低8位在后。 例3-3 ORG 1000H DW 1234H SJ_DATA: DW 56H,2000 经汇编后,从地址1000H处存贮器的内容为: (1000H)= 12H (1001H)= 34H (1002H)= 00H (1003H)= 56

4、H (1004H)= 07H (1005H)= D0H,四、EQU 赋值伪指令 字符名称 EQU 项(数或汇编符号),3.1.2 汇编伪指令,例:3-4: AA EQU R1 MOV A,AA 例:3-5: D10 EQU 10 ADD_Y EQU 07ABH MOV A,D10 LCALL ADD_Y,EQU伪指令是把“项”赋给“字符名称”,注意这里的“字符名称”不同于标号(其后没有冒号),但它是必须的。用EQU赋过值的符号名可以用作数据地址、代码地址、位地址或是一个立即数。,五、DS定义存贮空间伪指令 DS 表达式,3.1.2 汇编伪指令,在汇编时,从指定地址开始保留DS之后“表达式”的值

5、所规定的存贮单元。,ORG 1000H DS 07H DB 20H,20 DW 12H 经汇编后,从地址1000H开始保留7个单元,然后从1007H处存贮器的内容为: (1007H)= 20H (1008H)= 14H (1009H)= 00H (100AH)= 12H,六、DATA数据地址赋值伪指令 字符名称 DATA 表达式,3.1.2 汇编伪指令,这里的“字符名称”与标号不同(其后没有冒号),但它是必须的,其功能是把“表达式”的值赋给左边的“字符名称”。 DATA伪指令与EQU伪指令的主要区别是:EQU定义的“字符名称”必须先定义后使用,而DATA定义的“字符名称”没有这种限制,故DAT

6、A伪指令通常用在源程序的开头或末尾。,例3-7: ORG 0100H AA DATA 35H DPTRA DATA 0AA00H MOV A,AA ;(35H) A MOV DPTR,#DPTRA ;0AA00H DPTR,七、BIT定义位地址符号伪指令 字符名称 BIT 位地址,3.1.2 汇编伪指令,这里的“字符名称”与标号不同(其后没有冒号),但它是必须的,其功能是把BIT之后的“位地址”值赋给“字符名称”。,例3-6: P11 BIT P1.1 A2 BIT 02H MOV C,P11 MOV A2,C,八、汇编结束伪指令 END指出汇编结束,其后即使还有指令,汇编程序也不作处理。,3

7、.2 MCS-51的寻址方式,在高级语言编程时,程序设计人员不必关心程序和数据的内存空间安排问题。但在汇编语言程序设计时,要针对系统的硬件环境编程,数据的存放、传送、运算都要通过指令来完成,编程者必须自始至终都十分清楚操作数的位置,以便将它们传送至适当的空间去操作。,寻址方式就是如何找到存放操作数的地址,把操作数提取出来的方法。,MCS51指令的系统的指令数的寻址方式主要有八种:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基寄存器加变址寄存器间接寻址、相对寻址、位寻址、页面寻址。,一、寄存器寻址 由指令某一寄存器的内容作为操作数的寻址方式。 eg: INC R0 ;(R0)+1 R0,IN

8、C R0指令执行过程示意图,3.2 MCS-51的寻址方式,在指令中含有操作数的直接地址,该地址指出了参与计算或传送的数据所在的字节单元或位的地址。 eg: ANL 70H,#48H ;(70H)48H70H,二、 直接寻址,操作数的直接地址,3.2 MCS-51的寻址方式,在指令中某一个寄存器的内容作为操作数的地址的寻址方式,用符号表示。 eg: ANL A, R0 ; (A)( R0 ) A,寄存器间接寻址使用所选定的寄存器中R0和R1作地址指针(对栈操作时用堆栈指针SP)来寻址内部RAM(0FFH),也适用于访问外部扩展的数据存贮器,用R0、R1或DPTR作为地址指针。,三、寄存器间接寻

9、址,3.2 MCS-51的寻址方式,操作数包含在指令字节中 eg: MOV A,#70H,以16位的程序计数器PC或数据指针DPTR作为基寄存器,以8位的累加器A作为变址寄存器,内容相加形成16位新的地址。 MOVC A, A +PC ;(A)+(PC) A MOVC A, A +DPTR ;(A)+(DPTR) A,五、基寄存器加变址寄存器间接寻址,四、立即寻址,3.2 MCS-51的寻址方式,3.2 MCS-51的寻址方式,六、相对寻址,相对寻址方式是以当前的程序计数器PC值加上指令中给定的偏移量rel所得的结果作为转移地址。一般将相对转移指令操作码所在地址称为源地址,转移后的地址称为目的

10、地址,则有: 目的地址 = 源地址 + 相对转移指令字节数 + rel,3.2 MCS-51的寻址方式,七、位寻址,在计算机中,某些特定的操作数可以按8位二进制数中的某一位为单位进行存取和操作。位寻址方式是其操作数是8位二进制中的某一位。,例315:MOV C,01H ;01H为位地址, 表示(20H).1的内容传送到进位累加器。 例316:SETB EA 表示中断允许寄存器IE的位7置1。,3.2 MCS-51的寻址方式,八、页面寻址,当用寄存器间接寻址方式访问外部扩展的数据存贮器,当用R0、R1作地址指针访问片外RAM时的寻址方式称为页面寻址。页面地址由P2口的内容决定,页面内的地址由R0

11、或R1的内容决定。,例317: MOV P2,#0A0H MOV R0,#01H MOV A,#10H MOVX R0,A,(1)对程序存贮器只能采用立即寻址和基寄存器加变址寄存器间接寻址寻址方式。 (2)对特殊功能寄存器空间只能采用直接寻址方式(可以用符号来代表地址),不能采用寄存器间接寻址方式。 (3)内部RAM高128B只能采用寄存器间接寻址方式,不能采用直接寻址方式。 (4)内部RAM低128B 既能采用寄存器间接寻址方式,又能采用直接寻址方式。 (5)外部扩展的数据存贮器只能采用MOVX指令访问。,虽然MCS51单片机的寻址方式有多种,但指令对哪一个存贮器空间进行操作是由指令的操作码

12、和寻址方式确定的。总的来说,具有以下几点原则:,3.2 MCS-51的寻址方式,MCS51汇编语言有42种操作码助记符,33种操作功能,111种指令,可分为: 数据传送类(29) 算术操作类(24) 逻辑操作类(24) 位操作类 (17) 控制转移类(17),3.3 MCS-51的指令系统,3.3.1 数据传送类指令,数据数据传送类指令一般的操作是把源操作数传送到目的操作数. 注意:指令执行后,一般是源操作数不改变,目的操作数修改为源操作数。 可以在累加器A、工作寄存器R0R7、内部数据存贮器、外部数据存贮器和程序存贮器之间进行。 这类指令有:MOV,MOVX,MOVC,XCH,XCHD,SW

13、AP,POP,PUSH共8种。,一、以累加器A为目的操作数的指令,把源操作数的内容送ACC,源操作数的内容不变化。,二、以Rn为目的操作数的指令,3.3.1 数据传送类指令,源操作数的内容送入当前工作寄存器区的R0R7,MOV Direct ,A ;寄存器寻址 MOV Direct ,Rn ;寄存器寻址 MOV Direct ,Direct ;直接寻址 MOV Direct , Ri ;寄存器间接寻址 MOV Direct ,#data ;立即寻址,三、以直接寻址的单元为目的操作数的指令,3.3.1 数据传送类指令,源操作数的内容送入直接地址指出的存贮单元。,四、以寄存器间接寻址的单元为目的操

14、作数的指令,MOV Ri , A ;寄存器寻址 MOV Ri ,Direct ;直接寻址 MOV Ri ,#data ;立即寻址,3.3.1 数据传送类指令,源操作数的内容送入R0或R1指出的内部RAM中。,五、16位数据传送指令,MOV DPTR ,#data16 ;立即寻址 把16位立即数送到数据指针DPTR。 高8位 DPH,低8位 DPL eg: MOV DPTR ,#8000H,3.3.1 数据传送类指令,2、MOVC A, A+DPTR ;(A)+DPTR)A,(A)作为无符号数和DPTR内容相加后得到一个16位的地址,将该地址的内容 A,eg: (A)=30H,当前地址1000H

15、,MOVC A,A+PC ; (?H) A,3.3.1 数据传送类指令,六、查表指令,1、MOVC A, A+PC ;(A)+PC)A,(A)作为无符号数和PC内容(下一条指令的起始地址)相加后得到一个16位的地址,将该地址的内容 A,3.3.1 数据传送类指令,七、累加器A与片外RAM数据传送指令,eg:设(0650H)=20H ,(0FAH)=10H MOV DPTR ,#0650H ; MOV R0,#0FAH MOVX A , R0 ;(20FAH) A MOVX DPTR,A ;(A) 650H单元,八、栈操作指令,1、压栈指令,PUSH Direct ;寄存器间接寻址,eg: (S

16、P)=60H,(A)=30H,(B)=70H,3.3.1 数据传送类指令,PUSH B ; SP+1 SP, SP=62H (B) (SP), (62H)=70H,PUSH A ; SP+1 SP, SP=61H, (A) (SP), (61H)=30H, 堆栈指针SP+1 SP; 然后把直接地址的内容送到栈指针寻址的内部RAM单元中。,2、弹栈指令,POP Direct ;寄存器间接寻址,eg:(SP)=62H,(62H)=70H,(61H)=30H,3.3.1 数据传送类指令, 堆栈指针SP寻址的内部RAM单元送入直接地址指 出的字节单元中; SP-1 SP,数据传送类指令小结: 1、指令

17、执行后,源操作数不改变,目的操 作数修改为源操作数。 2、累加器A与片外RAM数据传送指令 MOVX,而且用DPTR 、 Ri 3、查表指令实际是从程序中读取数据 MOVC,可以用 A+PC , 也可以用A+DPTR,3.3.1 数据传送类指令,九、字节交换指令内容交换,XCH A , Rn ;寄存器寻址 ,(A)(Rn) XCH A ,Direct ;直接寻址,(A)(direct) XCH A ,Ri ;寄存器间接寻址,(A)(Ri) XCHD A ,Ri ;寄存器间接寻址 ;(A)03(Ri)03 SWAP A ;寄存器寻址 ,(A)03(A)47,eg: (A)=80H,(R7)=08

18、H XCH A , R7 ;(A)(R7) (A)=80H,(70H)=88H XCH A , 70H ;(A) (70H) (A)=80H,(70H)=60H MOV R0 ,#70H XCH A , R0 ;(A) ( R0 ),(A)=60H,(70H)=80H, (R0)=70H,eg: (A)=12H,(R1)=30H ,(30H)=34H XCHD A , R1 (A)=12H SWAP A,3.3.1 数据传送类指令,MCS51算术运算指令+,-,*,/,增量(加1),减量(减1)指令,执行结果将使进位(Cy)、辅助进位(AC),溢出(OV)标志置位或复位。但加1和减1指令不影响

19、以上标志。其操作助记符有:ADD,ADDC,SUBB,DA,INC,DEC,MUL,DIV 8种。,一、不带进位的加法指令,3.3.2 算术运算类指令,(A)= 4FH,CY=1 AC = 0,OV = 0,P = 1,(A)= 34H,CY=1 AC = 1,OV = 1,P = 1,二、带进位的加法指令,3.3.2 算术运算类指令,(A)= 85H,CY=1 AC = 1,OV = 0,P = 1,3.3.2 算术运算类指令,三、带进位减法指令,3.3.2 算术运算类指令,(A)=74H,CY=0,AC=0,OV=1,P=0,四、增量指令(加1)指令,这组指令除对A操作影响P标志外不影响其

20、它标志,3.3.2 算术运算类指令,五、减量(减1)指令,eg:(A)= 0FH ,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH,DA A,六、十进制调整指令,对累加器中由上一条加法指令(加数和被加数均为压缩的BCD 码)所获得的8位结果进行调整,使它调整为压缩BCD 码的数。,eg:(A)= 0FFH ,(R3)=0FH,(30H)=0F0H, (R0)=40H (40H)=00H,BCD码二进制表示的十进制数。而一个字节为8位,可以表示两个BCD码组合成压缩的BCD 码。(最大的压缩BCD 码数为99H)。,3.3.2 算术运算类指令,3.3.2 算术运算类

21、指令,(A)=23H,CY=1,8位无符号数的乘法操作,乘积为16位,低8位放在A中,高8位放在B中。若积大于255,则置位OV标志,CY总为0。,(B)= 32H ,(A)=00H, 积为3200H,CY=0,OV=1,MUL AB ;,七、乘法指令,3.3.2 算术运算类指令,DIV AB ;,(A)8位无符号数除以(B) 8位无符号数,所得商的整数放在A中,余数放在B中。,当(B)=0时,(A),(B)中内容均不确定,且OV=1。,(A)= 0DH ,(B)=11H, CY=0,OV=0,八、除法指令,3.3.2 算术运算类指令,3.3.3 逻辑运算类指令,一、对累加器A的单操作数的逻辑

22、操作指令,包括移位、与、或、非、异或、清除、求反等操作。其助记符有: CLR、CPL、RL、RLC、RR、RRC、ANL、ORL、XRL。,1、CLR A ;累加器A清“0”,不影响CY、AC、OV,左移8次?,左移9次?,右移8次?,右移9次?,7、累加器半字节交换,3.3.3 逻辑运算类指令,二、 两个操作数的逻辑操作指令,1、逻辑与指令,按位逻辑与操作,结果存放到目的操作数中。,eg:(A)= 07H ,(R0)=0FDH,ANL A,R0,eg:(A)= 07H ,(70H)=0FDH,ANL 70H,A,ORL Direct , A ;( direct )( A ) direct,O

23、RL A, #data ;(A) data A,ORL Direct , #data ;( direct ) data direct,按位逻辑或操作,结果存放到目的操作数中。,eg:(A)= 33H ,(P1)=05H,ORL P1,A,ORL A,Ri ;(A) ( Ri) A,2、逻辑或指令,ORL A,Rn ;(A) ( Rn ) A,ORL A,Direct ;(A) ( Direct ) A,二、 两个操作数的逻辑操作指令,3.3.3 逻辑运算类指令,XRL direct , A ;( direct )(A) direct,XRL direct , #data ;( direct )

24、 data direct,eg:(A)= 90H ,(R3)=73H,XRL A , R3,3、逻辑异或指令,XRL A,Rn ;(A) ( Rn ) A,XRL A,Direct ;(A) ( direct ) A,XRL A,Ri ;(A) ( Ri) A,XRL A, #data ;(A) data A,按位逻辑异或操作,结果存放到目的操作数中。,二、 两个操作数的逻辑操作指令,3.3.3 逻辑运算类指令,位操作指令是以进位位CY(PWS.7)作为累加器C以RAM(20H2FH)和SFR(8位倍数地址)内的位寻址区的位单元作为操作数,进行位变量的传送、修改和逻辑操作。,一、位变量传送指令

25、,MOV C,bit ;( bit) CY,MOV bit ,C ; CY bit,位传送必须经过累加器C来进行。,eg:MOV C,06H ;,MOV P1.0,C ;,设CY=1,(06H)=22H,(20H)=0BFH,3.3.4 位操作指令,SETB C ;1 CY,SETB Bit ;1 Bit,CLR C ;0 CY,CLR Bit ;0 Bit,CPL C ;CY CY,CPL Bit ;Bit Bit,eg:CLR C ;,CLR 27H ;,(24H)7 = 0,CLR 08H ;,SETB P1.7 ;,3.3.4 位操作指令,二、位变量修改指令,eg:MOV C,P1.0

26、 ;,ANL C,P1.1 ;,ANL C,/P1.2 ;,MOV P3.0,C ;,ANL C,Bit ;CY (Bit) CY, Bit本身内容不变,三、位变量逻辑与、或运算指令,3.3.4 位操作指令,ORL C,Bit ;CY (Bit) CY,ORL C,/Bit ; CY (Bit) CY, Bit本身内容不变,eg:CY=0,P1=0,ORL C,/P1.1,CY=1,P1=0,eg:MOV C,00H ;,ORL C,01H ;,ORL C,02H ;,MOV P1.0,C ;,(P1.0)=(20H)0 ( 20H )1 ( 20H)2 ( 20H)7,ORL C,07H ;

27、,3.3.4 位操作指令,1、短跳转指令,AJMP addr11 ;PC+2 PC,指令中 addr100 PC100,这是2KB范围内的无条件跳转指令,转移到指定地址,地址为:PC15PC11a10a9a0 PC。,MCS51把存贮空间划分为32个区,每个区为2KB字节。AJMP的下一条指令第一个字节与跳转的入口地址必须在同一区内,eg:KWR:AJMP addr11,设 addr11=001,0000,0000(a100), 设 KWR 处地址为:1030H, 设 KWR 处地址为: 3030H,0000H07FFH 0区,0800H0FFFH 1区,1000H17FFH 2区,3.3.5

28、控制转移指令,一、无条件转移指令,2、相对短跳转指令,SJMP rel ;PC+2+rel PC rel:-128127,rel:-128127,负数表示向后转移,正数表示向前转移。,编程时,rel往往用一个标号来代替,由汇编程序在汇编过程中自动计算偏移字节数,并填入指令代码中。当手工汇编时,rel一般用补码表示。,eg:KRD:SJMP PKRD,标号PKRD 的地址值为0123H,则:0123H=0100+2+rel rel=21H, 设 KRD的地址为0100H, 设 KRD的地址为0100H,标号PKRD 值为00F2H,则:00F2H=0100+2+rel rel=0F0H,3.3.

29、5控制转移指令,3、长跳转指令,LJMP addr16 ;addr150 PC,无条件跳转到指定地址,地址空间为64KB程序存贮器地址。,4、基寄存器加变址寄存器间接转移指令,JMP A+DPTR ;(A)+(DPTR) PC,eg: P96 例38,PM:MOV R1,A,RL A,ADD A,R1,MOV DPTR,#PMTB,JP A+DPTR,PMTB:LJMP PM0,LJMP PM1,LJMP PM2,LJMP PM3,LJMP PM4,LJMP PM5,LJMP PM6,3.3.5控制转移指令,1、测试条件符合转移指令,JZ rel ;(A)=0,(PC)+2+rel (PC),

30、(A) 0,(PC)+2 (PC),JNZ rel ;(A)0,(PC)+2+rel (PC),(A) = 0,(PC)+2 (PC),JC rel ;CY=1,(PC)+2+rel (PC),CY =0,(PC)+2 (PC),JNC rel ;CY=0,(PC)+2+rel (PC),CY =1,(PC)+2 (PC),JB Bit,rel ;(Bit)=1,(PC)+3+rel (PC), (Bit)=0,(PC)+3 (PC),JNB Bit,rel ; (Bit)=0,(PC)+3+rel (PC) (Bit)=1,(PC)+3 (PC),JBC Bit,rel ; (Bit)=1,

31、(PC)+3+rel (PC),且清(Bit)=0 (Bit)=0,(PC)+3 (PC),2、比较不相等转移指令,a、CJNE A,direct,rel,(A)=(direct),(PC)+3 (PC),0 CY,(A)(direct),(PC)+3+rel (PC),0 CY,(A)(direct),(PC)+3+rel (PC),1 CY,二、条件转移指令,b、CJNE A,#data,rel,(A)=data,(PC)+3 (PC),0 CY,(A) data ,(PC)+3+rel (PC),0 CY,(A) data ,(PC)+3+rel (PC),1 CY,c、CJNE Rn,

32、#data,rel,(Rn)=data,(PC)+3 (PC),0 CY,(Rn) data ,(PC)+3+rel (PC),0 CY,(Rn) data ,(PC)+3+rel (PC),1 CY,d、CJNE Ri,#data,rel,((Ri))=data,(PC)+3 (PC),0 CY,( (Ri) ) data ,(PC)+3+rel (PC),0 CY,( (Ri) ) data ,(PC)+3+rel (PC),1 CY,二、条件转移指令,执行下面程序后将根据A的内容大于60H、等于60H、小于60H三种情况作不同处理:,CJNE A,#60H,NEQ ;(A)不等于60H转

33、移,EQ: ;(A)等于60H处理程序,NEQ: JC LOW ;(A) 60H 转移,;(A) 60H 处理程序,LOW: ;(A) 60H 处理程序,二、条件转移指令,3、减1不为0转移指令,DJNZ Rn,rel ;(Rn)-1 (Rn) (Rn)=0,(PC)+2 (PC) (Rn)0,(PC)+2+rel (PC),DJNZ direct,rel ;(direct)-1 (direct) (direct)=0,(PC)+3 (PC) (direct)0,(PC)+3+rel (PC),子程序:具有一定功能的公用程序段。在子程序的末尾一般是一条返回指令(RET)。,当主程序调用子程序时

34、 把下一条指令地址 (SP),(SP+2) (SP),子程序起始地址 PC,子程序执行返回时:把调用子程序处下一条指令地址从堆栈中取出 PC,(SP)-2 (SP),二、条件转移指令,三、调用和返回指令,START:SETB P1.1 ;1 P1.1,DL: MOV 30H,# 03H ;03H 30H,置初值,DL0: MOV 31H,# 0F0H ;0F0H 31H,置初值,DL1: DJNZ 31H,DL1 ;(31H)-1 31H,(31H)不为0 重复执行,DJNZ 30H,DL0 ;(30H)-1 30H,(30H)不为0 转DL0,CPL P1.1 ;P1.1求反,AJMP DL

35、 ;转DL,一般而言,可以多次调用子程序,子程序调用可以嵌套。,三、调用和返回指令,压栈,1、短调用指令,ACALL addr11,(PC)+2 PC, (SP)+1 SP,(PC70) (SP)低, (SP)+1 SP,(PC158) (SP)高, PC15PC14PC13PC12PC11a10a9a0 PC(转向执行子程序),eg: (SP)=60H,标号MA值为0123H。SUB起始地址0345H,MA:ACALL SUB,(PC)+2,三、调用和返回指令,2、长调用指令,压栈,LCALL addr16 ; addr16 64KB地址区,(PC)+3 PC, (SP)+1 SP,(PC7

36、0) (SP)低, (SP)+1 SP,(PC158) (SP)高, addr16 PC,eg: (SP)=60H,START:标号地址 0100H。 DIR:标号地址 8100H,START:LCALL DIR,三、调用和返回指令,3、返回指令,、从子程序返回,RET, (SP)-1 SP ,(SP) PC70, (SP)-1 SP,(SP) PC158,即把堆栈顶的内容送到PC寄存器中。,eg: (SP)=62H,(61H)=30H,(62H)=07H,RET,三、调用和返回指令,、从中断返回,RETI, (SP)-1 SP,(SP) PC70, (SP)-1 SP,(SP) PC158,

37、中断返回指令把栈顶的内容送到PC寄存器中,同时释放中断逻辑使之能接受同级的另一中断请求。CPU执行RETI指令后至少要再执行一条指令,才能响应新的中断请求。,四、空操作指令,NOP ;除(PC)+1 (PC)外无任何操作。,一般用于延时。,三、调用和返回指令,指令助记符注释,MOV Move,MOVCMove Code,MOVXMove External RAM,PUSH ,POP ,XCH Exchange,XCHD Exchange low-order Digit,ACALLAbsolute Subroutine Call,LCALLLong Subroutine Call,RETRetu

38、rn from Subroutine,RETIReturn from Interrupt,AJMPAbsolute Jump,LJMPLong Jump,SJMPShort Jump,JZJump if Accumulator is Zero,JNZJump if Accumulator is Not Zero,JCJump if Carry flag is Set,JNCJump if No Carry flag,JBJump if direct Bit Set,JNBJump if direct Bit Not Set,JBCJump if direct Bit Set & Clear B

39、it,CJNECompare Jmp if Not Equal,DJNZDecrement Jump if Not Zero,NOPNo Operation,指令助记符注释,1、执行前 (0E0H)=10H,(78H)=20H,执行 MOV 0E0H,#78H 后,(0E0H)=?H,(78H)=?H,2、执行前 (0E0H)=10H,(78H)=20H,执行 MOV 0E0H,78H 后,(0E0H)=?H,(78H)=?H,3、执行前(A)=11H,(R1)=40H,(30H)=22H, (40H)=33H,执行 MOV R1,#30H,(A)=?H,(R1)=?H, ( 30H)=?H

40、, ( 40H)=?H,MOV A,R1 后,4、执行前(A)=11H,(R0)=40H,(30H)=22H, (40H)=33H,(A)=?H,(R0)=?H, ( 30H)=?H , ( 40H)=?H,MOV R0 ,A 后,执行 MOV R0,#30H,单元练习题,5、执行前 SP=60H,(30H)=00H,(31H)=80H,执行 PUSH 30H,SP=?H,(30H)=?H,(31H)=?H,DPTR=?H,PUSH 31H,POP DPH,POP DPL 后,6、执行前(A)=39H,(R1)=87H,(87H)=16H,(A)=?H,(R1)=?H, ( 87H)=?H,执

41、行 XCHD A, R1后,7、执行: ORG 8000H,MOV A,#41H,MOVC A, A+PC,ORG 8040H,DB 1,2,3,4,5,6,7,8,9,(A)=?,单元练习题,(A)=?H,(R1)=?H, ( 30H)=?H , ( 40H)=?H,CY=?,AC=?,P=?,OV=?,8、执行前(A)=22H,(R1)=30H,(30H)=10H,(40H)=20H, CY=1,ADDC A,R1 后,执行 MOV R1,#40H,执行 MOV R1,#40H,9、执行前(A)=70H,(70H)=0C9H,(80H)=90H, CY=1,(A)=?H,(70H)=?H,

42、 ( 80H)=?H , CY=?,AC=?,P=?,OV=?,SUBB A,#80H 后,执行 MOV 80H,A,10、执行前(90H)=10H,(A)=01H,(90H)=?H, ( A)=?H,执行 ORL 90H, A 后,单元练习题,11、执行前 CY=1,(20H)=04H ,(01H)=20H,CY=?, ( 20H)=?H , ( 01H)=?H,执行 MOV C, 01H 后,12、执行前 (2FH)=10H ,(25H)=80H,( 2FH)=?H , ( 25H)=?H,执行 CLR 2FH 后,13、执行前 CY=0,(P1)=10H,CY=?, ( P1)=?H,执

43、行 ORL C, /P1.1,ANL C, P1.1 后,执行:MOV 60H ,#80H,CJNE A, 60H, NEXT,NEXT: 后,(A)=?H,(60H)=?H,CY=?,14、执行前 (A)=70H,单元练习题,15、执行前 (SP)=70H,START标号地址为:8000H DELAY 子程序地址为:8100H,调用 START:LCALL DELAY 后(子程序没返回),(PC)=?H,(SP)=?H,(70H)=?,(71H)=?,(72H)=?H,16、执行前 (SP)=70H,START标号地址为:8000H DELAY 子程序地址为:8100H,执行 START:LCALL DELAY 后,并从子程序返回后(子程序中无错误):,(PC)=?H,(SP)=?H,(70H)=??,(71H)=?,(72H)=?H,单 元 练 习 题,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1