湘潭大学单片机学习教案_第1页
湘潭大学单片机学习教案_第2页
湘潭大学单片机学习教案_第3页
湘潭大学单片机学习教案_第4页
湘潭大学单片机学习教案_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1第一页,共70页。汇编程序机器语言编译、解释机器语言eg: MOV R0 ,#data01111000 #data汇编语言,高级语言汇编语言,高级语言第1页/共69页第二页,共70页。由25个英文字母组成的助记符至少一个空格用“,”隔开,操作个数可为无,1,2,3操作码:反映(fnyng)了指令的功能。操作数:反映(fnyng)了指令的对象。eg: MOV A , #01;01 A7401 ADDC A,R1;(A)+(R1)+CY A 393.1.1汇编语言格式 由操作助记符和操作数字段组成汇编指令指能汇编成机器语言代码的指令。格式:操作码 操作数1, 操作数2 ,操作数3第2页/共

2、69页第三页,共70页。第3页/共69页第四页,共70页。 ORG1000HDB0AAH SJ-DATA:DB25,25H ZFC-DATA:DBMCS-51经汇编后,从地址(dzh)1000H处存贮器的内容为:(1000H)= AAH(1001H)= 19H(1002H)= 25H(1003H)= 4DH(1004H)= 43H(1005H)= 53H(1006H)= 2DH(1007H)= 35H(1008H)= 31H第4页/共69页第五页,共70页。三、字定义(dngy)伪指令 标号: DW Y1、 Y2 Yn通知汇编程序(hu bin chn x)从当前ROM地址开始,保留存贮单元,

3、并存入DW后面的数据。存放时高8位在前,低8位在后。例3-3 ORG 1000H DW1234HSJ_DATA:DW56H,2000经汇编后,从地址1000H处存贮器的内容为:(1000H)= 12H(1001H)= 34H(1002H)= 00H(1003H)= 56H(1004H)= 07H(1005H)= D0H第5页/共69页第六页,共70页。例:3-4: AAEQUR1MOVA,AA 例:3-5: D10EQU10ADD_Y EQU07ABHMOVA,D10LCALL ADD_Y EQU伪指令是把“项”赋给“字符名称”,注意这里的“字符名称”不同于标号(其后没有冒号),但它是必须(b

4、x)的。用EQU赋过值的符号名可以用作数据地址、代码地址、位地址或是一个立即数。 第6页/共69页第七页,共70页。在汇编时,从指定地址开始保留(boli)DS之后“表达式”的值所规定的存贮单元。 ORG1000HDS07HDB20H,20 DW12H 经汇编后,从地址1000H开始保留7个单元,然后从1007H处存贮器的内容为:(1007H)= 20H(1008H)= 14H(1009H)= 00H(100AH)= 12H第7页/共69页第八页,共70页。 这里的“字符名称”与标号不同(b tn)(其后没有冒号),但它是必须的,其功能是把“表达式”的值赋给左边的“字符名称”。 DATA伪指令

5、与EQU伪指令的主要区别是:EQU定义的“字符名称”必须先定义后使用,而DATA定义的“字符名称”没有这种限制,故DATA伪指令通常用在源程序的开头或末尾。 例3-7: ORG0100H AA DATA 35H DPTRA DATA 0AA00HMOVA,AA ;(35H) AMOVDPTR,#DPTRA ;0AA00H DPTR第8页/共69页第九页,共70页。 这里的“字符名称”与标号不同(其后没有冒号),但它是必须(bx)的,其功能是把BIT之后的“位地址”值赋给“字符名称”。 例3-6:P11BITPA2BIT02HMOVC,P11MOVA2,C八、汇编结束伪指令END指出汇编结束,其

6、后即使还有指令,汇编程序也不作处理。第9页/共69页第十页,共70页。 在高级(goj)语言编程时,程序设计人员不必关心程序和数据的内存空间安排问题。但在汇编语言程序设计时,要针对系统的硬件环境编程,数据的存放、传送、运算都要通过指令来完成,编程者必须自始至终都十分清楚操作数的位置,以便将它们传送至适当的空间去操作。 寻址方式就是如何找到存放操作数的地址(dzh),把操作数提取出来的方法。 MCS51指令的系统的指令数的寻址方式主要有八种八种:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基寄存器加变址寄存器间接寻址、相对寻址、位寻址、页面寻址。第10页/共69页第十一页,共70页。一、寄存

7、器寻址 由指令(zhlng)某一寄存器的内容作为操作数的寻址方式。eg: INC R0;(R0)+1 R0INC R0指令执行(zhxng)过程示意图第11页/共69页第十二页,共70页。在指令中含有操作数的直接地址,该地址指出了参与计算或传送的数据所在的字节(z ji)单元或位的地址。 eg:ANL 70H,#48H;(70H)48H70H 操作数的直接(zhji)地址3.2 MCS-51的寻址方式第12页/共69页第十三页,共70页。在指令中某一个寄存器的内容(nirng)作为操作数的地址的寻址方式,用符号表示。eg: ANL A, R0; (A)( R0 ) A 寄存器间接寻址使用所选定

8、的寄存器中R0和R1作地址指针(zhzhn)(对栈操作时用堆栈指针(zhzhn)SP)来寻址内部RAM(0FFH),也适用于访问外部扩展的数据存贮器,用R0、R1或DPTR作为地址指针(zhzhn)。3.2 MCS-51的寻址方式第13页/共69页第十四页,共70页。操作数包含在指令(zhlng)字节中eg: MOV A,#70H 以16位的程序(chngx)计数器PC或数据指针DPTR作为基寄存器,以8位的累加器A作为变址寄存器,内容相加形成16位新的地址。MOVC A, A +PC ;(A)+(PC) AMOVC A, A +DPTR ;(A)+(DPTR) A 五、基寄存器加变址寄存器间

9、接(jin ji)寻址3.2 MCS-51的寻址方式第14页/共69页第十五页,共70页。 eg:JC80H;C=1跳转 PC+2+relPC设原PC=1005HPC+2+rel=1005H+2+80H=1007H-128=0F87H=1007H+FF80H=0F87H1000000010000000(-128)求补码:11111111100000003.2 MCS-51的寻址方式(fngsh)六、相对(xingdu)寻址 相对寻址方式是以当前的程序计数器PC值加上指令中给定的偏移量rel所得的结果作为转移地址。一般将相对转移指令操作码所在地址称为(chn wi)源地址,转移后的地址称为(ch

10、n wi)目的地址,则有: 目的地址 = 源地址 + 相对转移指令字节数 + rel 第15页/共69页第十六页,共70页。3.2 MCS-51的寻址方式(fngsh)七、位寻址 在计算机中,某些特定的操作数可以(ky)按8位二进制数中的某一位为单位进行存取和操作。位寻址方式是其操作数是8位二进制中的某一位。 例315:MOVC,01H;01H为位地址,表示(20H).1的内容传送(chun sn)到进位累加器。例316:SETBEA表示中断允许寄存器IE的位7置1。第16页/共69页第十七页,共70页。3.2 MCS-51的寻址方式(fngsh)八、页面(y min)寻址 当用寄存器间接寻址

11、方式访问外部扩展的数据存贮器,当用R0、R1作地址(dzh)指针访问片外RAM时的寻址方式称为页面寻址。页面地址(dzh)由P2口的内容决定,页面内的地址(dzh)由R0或R1的内容决定。例317: MOVP2,#0A0H MOVR0,#01H MOVA,#10H MOVXR0,A 第17页/共69页第十八页,共70页。(1)对程序存贮器只能采用立即(lj)寻址和基寄存器加变址寄存器间接寻址寻址方式。(2)对特殊功能寄存器空间只能采用直接寻址方式(可以用符号来代表地址),不能采用寄存器间接寻址方式。(3)内部RAM高128B只能采用寄存器间接寻址方式,不能采用直接寻址方式。(4)内部RAM低1

12、28B 既能采用寄存器间接寻址方式,又能采用直接寻址方式。(5)外部扩展的数据存贮器只能采用MOVX指令访问。 虽然MCS51单片机的寻址方式有多种,但指令对哪一个(y )存贮器空间进行操作是由指令的操作码和寻址方式确定的。总的来说,具有以下几点原则: 3.2 MCS-51的寻址方式(fngsh)第18页/共69页第十九页,共70页。MCS51汇编语言有42种操作码助记符,33种操作功能,111种指令,可分为: 数据传送类(29) 算术操作类(24) 逻辑操作类(24) 位操作类 (17) 控制(kngzh)转移类(17)3.3 MCS-51的指令系统(zh ln x tn)第19页/共69页

13、第二十页,共70页。数据数据传送类指令一般(ybn)的操作是把源操作数传送到目的操作数,指令执行后,一般(ybn)是源操作数不改变,目的操作数修改为源操作数。可以在累加器A、工作寄存器R0R7、内部数据存贮器、外部数据存贮器和程序存贮器之间进行。这类指令有:MOV,MOVX,MOVC,XCH,XCHD,SWAP,POP,PUSH共8种。一、以累加器一、以累加器A为目的为目的(md)操作数的指令操作数的指令MOVA,Rn ;寄存器寻址 MOVA,Direct ;直接寻址MOVA,Ri ;间接寻址MOVA,#data ;立即寻址 (Rn) A 寄存器的内容作为含有操作数的直接地址。i=0,1 寄存

14、器的内容作为含有操作数的地址直接包含操作数把源操作数的内容送ACC,源操作数的内容不变化。第20页/共69页第二十一页,共70页。eg: MOVA,R6 ;(R6)AMOV A,70H ;(70H) AMOVA,R0 ;( R0)AMOVA,#78H ;78HA二、以Rn为目的(md)操作数的指令MOV Rn , A ;寄存器寻址 MOV Rn ,Direct ;直接寻址MOV Rn ,#data ;立即寻址n=07eg: MOVR2,A ; ( A) R2 MOV R7 ,70H ;(70H) R7MOV R7 ,#0A0H ;0A0HR7源操作数的内容(nirng)送入当前工作寄存器区的R

15、0R7第21页/共69页第二十二页,共70页。MOV Direct ,A ;寄存器寻址 MOV Direct ,Rn ;寄存器寻址 MOV Direct ,Direct ;直接寻址MOV Direct , Ri ;寄存器间接(jin ji)寻址MOV Direct ,#data ;立即寻址三、以直接(zhji)寻址的单元为目的操作数的指令eg: MOVP1,A ; MOV 90H,A ; (A) P1 MOV 70H ,R2 ;( R2 ) (70H)MOV0E0H,78H;(78H) AMOV40H, R0 ; ( R0) 40HMOV01H, #80H ; 80H 01H 源操作数的内容送

16、入直接地址指出的存贮单元。第22页/共69页第二十三页,共70页。四、以寄存器间接(jin ji)寻址的单元为目的操作数的指令MOV Ri , A ;寄存器寻址 MOV Ri ,Direct ;直接(zhji)寻址MOV Ri ,#data ;立即寻址eg: MOV R1,A ;(A) ( R1 )MOV R0 ,70H;(70H) (R0)MOV R1 ,#80H ; 80H (R1) 源操作数的内容送入R0或R1指出的内部RAM中。第23页/共69页第二十四页,共70页。五、16位数据传送(chun sn)指令 MOV DPTR ,#data16 ;立即(lj)寻址 把16位立即(lj)数

17、送到数据指针DPTR。高8位 DPH,低8位 DPL eg: MOV DPTR ,#8000H 六、查表指令1、MOVCA, A+PC ;(A)+PC)A (A)作为无符号数和PC内容(下一条指令的起始地址下一条指令的起始地址)相加后得到一个16位的地址,将该地址的内容 A第24页/共69页第二十五页,共70页。2、MOVCA, A+DPTR ;(A)+DPTR)A (A)作为无符号数和DPTR内容(nirng)相加后得到一个16位的地址,将该地址的内容(nirng) Aeg: (DPTR)=8100H,(A)=40H MOVCA, A+DPTR ;(?H) Aeg: (A)=30H,当前地址

18、1000HMOVC A,A+PC;(?H) Aeg: ORG8000HMOV A, #30MOVC A, A+PC;(?H) AORG8030HDB41H,42H,43H,44H,45H第25页/共69页第二十六页,共70页。七、累加器A与片外RAM数据(shj)传送指令eg: MOV DPTR ,#0650H ;设(0650H)=20H MOV R0,#0FAH;(0FAH)=10H MOV P2, #20HMOVX A , R0 ;(20FAH) A MOVX DPTR,A ;(A) 650H单元(dnyun)(A) 外部数据存贮器MOVXA , DPTR ;MOVXA,Ri ; MOVX

19、 DPTR ,A ; MOVX Ri ,A ;外部数据存贮器的内容 A第26页/共69页第二十七页,共70页。八、栈操作(cozu)指令1、压栈指令(zhlng) PUSH Direct ;寄存器间接(jin ji)寻址 eg: (SP)=60H,(A)=30H,(B)=70H PUSH B ; SP+1 SP,(B) (SP),SP=62H,(62H)=70H中断保护现场 PUSH A ; SP+1 SP,(A) (SP),SP=61H,(61H)=30H 堆栈指针SP+1 SP; 然后把直接地址的内容送到栈指针寻址的内部RAM单元中。 第27页/共69页第二十八页,共70页。 POP DP

20、L ; (61H) DPL ,SP-1 SP ;DPL=30H SP=60H POP DPH ; (62H) DPH ,SP-1 SP ;DPH=70H, SP=61H2、弹栈指令(zhlng) POP Direct;寄存器间接(jin ji)寻址 eg:(SP)=62H,(62H)=70H,(61H)=30H 堆栈指针SP寻址的内部RAM单元送入直接地址指 出的字节单元中; SP-1 SP 第28页/共69页第二十九页,共70页。九、字节交换(jiohun)指令内容交换(jiohun)XCH A , Rn ;寄存器寻址 ,(A)(Rn) XCH A ,Direct;直接(zhji)寻址,(A

21、)(direct) XCH A ,Ri ;寄存器间接寻址,(A)(Ri) XCHD A ,Ri ;寄存器间接寻址 ;(A)03(Ri)03 SWAP A;寄存器寻址 ,(A)03(A)47eg: (A)=80H,(R7)=08H XCH A , R7 ;(A)(R7) (A)=80H,(70H)=88H XCHA , 70H ;(A) (70H) (A)=80H,(70H)=60H MOVR0 ,#70H XCHA , R0 ;(A) ( R0 )(A)=60H,(70H)=80H, (R0)=70H第29页/共69页第三十页,共70页。eg: (A)=12H,(R1)=30H,(30H)=3

22、4H XCHD A , R1 (A)=12H SWAPA 第30页/共69页第三十一页,共70页。MCS51算术运算指令(zhlng)+,-,*,/,增量(加1),减量(减1)指令(zhlng),执行结果将使进位(Cy)、辅助进位(AC),溢出(OV)标志置位或复位。但加1和减1指令(zhlng)不影响以上标志。其操作助记符有:ADD,ADDC,SUBB,DA,INC,DEC,MUL,DIV 8种。一、不带进位(jnwi)的加法指令ADDA,Rn;(A)+( Rn ) A , n=07ADDA,Direct;(A)+( Direct ) AADDA,Ri;(A)+( Ri) A, i=0,1A

23、DDA, #data;(A)+data A 第31页/共69页第三十二页,共70页。eg1: (A)=53H,(R0)=0FCHADDA, R0 1 0 1 0 0 1 1 1 1 + 1 1 1 1 1 1 0 0 0 1 0 1 0 0 1 1(A)= 4FH,CY=1AC = 0,OV = 0,P = 1eg2: (A)=85H,(R0)=30H,(30H)=0AFHADDA, R0;85H+0AFH A(A)=34H 1 0 0 1 1 0 1 0 0 + 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 1(A)= 34H,CY=1AC = 1,OV = 1,P = 1二、

24、带进位(jnwi)的加法指令ADDC A,Rn;(A)+( Rn )+CY A ADDC A,Direct;(A)+( direct )+CY AADDC A,Ri;(A)+( Ri)+CY AADDC A, #data;(A)+data+CY A 第32页/共69页第三十三页,共70页。eg2: (A)=85H,(20H)=0FFH,CY=1ADDC A, 20H; + 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1(A)= 85H,CY=1AC = 1,OV = 0,P = 1三、带进位减法(jinf)指令SUBBA,Rn;(A)-(

25、 Rn )- CY ASUBBA,Direct;(A)-( direct )- CY ASUBBA,Ri;(A)-( Ri)- CY A SUBBA, #data;(A)- data - CY A 第33页/共69页第三十四页,共70页。eg:(A)= 0C9H ,(R2)=54H,CY=1SUBB A, R2 - 1 1 1 0 0 1 0 0 10 1 1 1 0 1 0 0 0 1 0 1 0 1 0 0(A)=74H,CY=0,AC=0,OV=1,P=0四、增量(zn lin)指令(加1)指令INC A;(A)+1 AINC Rn ;( Rn )+1 Rn INC Ri ;( Ri)+

26、1 (Ri),i=0,1INC DPTR ;( DPTR )+1DPTR INC Direct ;( direct )+1 direct这组指令(zhlng)除对A操作影响P标志外不影响其它标志第34页/共69页第三十五页,共70页。五、减量(减1)指令(zhlng)DEC A;(A)-1 ADEC Rn ;( Rn )-1 Rn DECRi ;(( Ri))-1 (Ri)DEC Direct ;( direct )-1 directeg:(A)= 0FH ,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFHDEC R7 ;DEC 30H ;DEC R1;DEC A

27、;0FH-1 A,(A)=0EH19H-1 R7,( R7)=18H00H-1 (30H),(30H)=0FFH(40H)-1(40H),(40H)=0FEH第35页/共69页第三十六页,共70页。DAA六、十进制调整(tiozhng)指令 对累加器中由上一条加法指令(加数和被加数均为压缩的BCD 码)所获得的8位结果(ji gu)进行调整,使它调整为压缩BCD 码的数。eg:(A)= 0FFH ,(R3)=0FH,(30H)=0F0H, (R0)=40H (40H)=00HINC R3 ;( R3 )= 10HINC 30H ;INC R0;(30H )= 0F1H(40H)= 01H(A)

28、= 00HINC A ;BCD码二进制表示的十进制数。而一个字节为8位,可以(ky)表示两个BCD码组合成压缩的BCD 码。(最大的压缩BCD 码数为99H)。第36页/共69页第三十七页,共70页。ACC0ACC39吗?AC=1否?(A)+06H AACC4ACC79吗?CY=1否?(A)+60H A结束开始YNNYYNNYA309或AC=1 A30 +6A A749或C=1 A74 +6A第37页/共69页第三十八页,共70页。eg:(A)= 56H ,(R5)=67HADDA, R5DA A1 0 1 1 1 1 0 1 + 0 1 1 0 0 1 1 1 0 1 0 1 0 1 1 0

29、1 1 0 0 0 0 1 1 + 0 0 0 0 0 1 1 0 + 0 1 1 0 0 0 0 01 0 0 1 0 0 0 1 1(A)=23H,CY=1 8位无符号数的乘法操作,乘积(chngj)为16位,低8位放在A中,高8位放在B中。若积大于255,则置位OV标志,CY总为0。MULABeg:(A)= 50H ,(B)=0A0H(B)= 32H ,(A)=00H, 积为3200H,CY=0,OV=1MULAB;七、乘法(chngf)指令第38页/共69页第三十九页,共70页。DIVAB;(A)8位无符号(fho)数除以(B) 8位无符号(fho)数,所得商的整数放在A中,余数放在B

30、中。一般(A)/(B)的商(A)( A)/(B)的余(B) CY=0,OV=0当(B)=0时,(A),(B)中内容(nirng)均不确定,且OV=1。eg:(A)= 0FBH ,(B)=12HDIVAB(A)= 0DH ,(B)=11H, CY=0,OV=0100101 1 1 1 1 0 1 11 1 0 11 0 0 1 01 0 0 1 01 1 0 1 01 0 0 0 1 1 1 0 0 1 01 0 0 0 1八、除法(chf)指令第39页/共69页第四十页,共70页。.3 逻辑运算类指令(zhlng)一、对累加器A的单操作(cozu)数的逻辑操作(cozu)指令 包括移位、与、或

31、、非、异或、清除(qngch)、求反等操作。其助记符有: CLR、CPL、RL、RLC、RR、RRC、ANL、ORL、XRL。1、CLRA;累加器A清“0”,不影响CY、AC、OV2、CPLA;AA,不影响标志3、RLA;左移1位,Bit0 Bit1, Bit7 Bit0A7A0左移8次?4、RLCA;(A)和CY一起向左1位。Bit0 Bit1, Bit7 CY,CY Bit0A7A0CY左移9次?第40页/共69页第四十一页,共70页。A7A0右移(yu y)8次?右移(yu y)9次?5、RRA;右移1位,Bit7 Bit6, Bit0 Bit7A7A0CY6、RRCA;(A)和CY一起

32、向右1位。CYBit7, Bit Bit6, Bit0 CY7、累加器半字节(z ji)交换SWAP A;(Bit7Bit4) (Bit3 Bit0)互换。设(A)=12H,执行指令:SWAP A;(A)=21H.3 逻辑运算类指令第41页/共69页第四十二页,共70页。1、逻辑(lu j)与指令ANLA,Rn;(A) ( Rn ) A ANL Direct , A ;( direct ) (A ) directANLA,Direct;(A) ( direct ) AANLA,Ri;(A) ( Ri) AANLA, #data;(A) dataA ANL Direct , #data ;( d

33、irect ) data direct 按位逻辑与操作,结果(ji gu)存放到目的操作数中。eg:(A)= 07H ,(R0)=0FDHANLA,R0(A)= 05H 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 1eg:(A)= 07H ,(70H)=0FDHANL70H,A0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1(70H)= 05H 第42页/共69页第四十三页,共70页。ORL Direct , A ;( direct )( A ) direct ORLA, #data;(A) data

34、A ORL Direct , #data ;( direct ) data direct按位逻辑或操作,结果(ji gu)存放到目的操作数中。eg:(A)= 33H ,(P1)=05HORLP1,A0 0 1 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 1(A)= 37H ORLA,Ri;(A) ( Ri) A2、逻辑(lu j)或指令ORLA,Rn;(A) ( Rn ) A ORLA,Direct;(A) ( Direct ) A二、二、两个操作两个操作(cozu)数的逻辑操作数的逻辑操作(cozu)指令指令.3 逻辑运算类指令第43页/共69页第四十四页

35、,共70页。XRL direct , A ;( direct )(A) direct XRL direct , #data ;( direct ) data direct eg:(A)= 90H ,(R3)=73HXRL A , R31 1 1 0 0 0 1 1 0 1 1 1 0 0 1 1 1 0 0 1 0 0 0 0异或:相同为0,相异为1(A)= 0E3H 3、逻辑(lu j)异或指令XRLA,Rn;(A) ( Rn ) AXRLA,Direct;(A) ( direct ) AXRLA,Ri;(A) ( Ri) AXRLA, #data;(A) dataA 按位逻辑(lu j)异

36、或操作,结果存放到目的操作数中。.3 逻辑运算类指令第44页/共69页第四十五页,共70页。(20H)6CY ,CY=0CY P1.0或(90H)0位操作指令是以进位位CY(PWS.7)作为累加器C以RAM(20H2FH)和SFR(8位倍数地址)内的位寻址区的位单元作为操作数,进行(jnxng)位变量的传送、修改和逻辑操作。一、位变量传送一、位变量传送(chun sn)(chun sn)指令指令MOVC,bit;( bit)CYMOVbit ,C; CY bit位传送必须经过(jnggu)累加器C来进行。eg:MOVC,06H;MOV P1.0,C ;设CY=1,(06H)=22H,(20H)

37、=0BFH.4 位操作指令第45页/共69页第四十六页,共70页。SETB C ;1 CYSETB Bit ;1 BitCLRC;0 CYCLRBit;0 BitCPLC;CY CYCPLBit;Bit Bit eg:CLRC ;CLR 27H ;0 CY (24H)7 = 00 (21H)0CLR 08H ;SETB P1.7 ;1 P1.7或(90H)7.4 位操作指令(zhlng)二、位变量二、位变量(binling)(binling)修修改指令改指令第46页/共69页第四十七页,共70页。eg:MOVC,P1.0;ANL C,P1.1 ;( P1.0)CY ANL C,/P1.2 ;M

38、OV P3.0,C ;CY P3.0ANLC,Bit;CY (Bit)CYANLC,/Bit; CY (Bit)CY, Bit本身(bnshn)内容不变( P1.0 )( P1.1) CY(( P1.0 )( P1.1))( P1.2) CY(P3.0)=( P1.0 )( P1.1) ) ( P1.2)三、位变量逻辑三、位变量逻辑(lu j)与、或运算指令与、或运算指令.4 位操作指令(zhlng)第47页/共69页第四十八页,共70页。ORLC,Bit;CY (Bit)CYORLC,/Bit; CY (Bit)CY, Bit本身(bnshn)内容不变eg:CY=0,P1=0ORLC,/PC

39、Y=1,P1=0eg:MOVC,00H ;ORL C,01H ;ORL C,02H ;MOV P1.0,C ;(P1.0)=(20H)0 ( 20H )1 ( 20H)2 ( 20H)7ORL C,07H ; .4 位操作指令(zhlng)第48页/共69页第四十九页,共70页。1、短跳转指令、短跳转指令(zhlng)AJMP addr11;PC+2PC,指令(zhlng)中 addr100 PC100这是2KB范围内的无条件跳转指令,转移到指定(zhdng)地址,地址为:PC15PC11a10a9a0 PC。MCS51把存贮空间划分为32个区,每个区为2KB字节。AJMP的下一条指令第一个字

40、节与跳转的入口地址必须在同一区内eg:KWR:AJMPaddr11设 addr11=001,0000,0000(a100) 设 KWR 处地址为:1030H则执行指令后转移到:a.PC+2PCPC=1032HPC1511=00010。b.00010 001,0000,0000B=1100H 设 KWR 处地址为: 3030H则执行指令后转移到:a.PC+2PCPC=3032HPC1511=00110。b.00110 001,0000,0000B=3100H0000H07FFH 0区区0800H0FFFH 1区区1000H17FFH 2区区.5控制转移指令一、一、无条件转移指令第49页/共69页

41、第五十页,共70页。2、相对、相对(xingdu)短跳转指令短跳转指令SJMPrel;PC+2+relPCrel:-128127rel:-128127,负数表示向后转移(zhuny),正数表示向前转移(zhuny)。编程时,rel往往(wngwng)用一个标号来代替,由汇编程序在汇编过程中自动计算偏移字节数,并填入指令代码中。当手工汇编时,rel一般用补码表示。eg:KRD:SJMPPKRD标号PKRD 的地址值为0123H则:0123H=0100+2+relrel=21H 设KRD的地址为0100H 设 KRD的地址为0100H标号PKRD 值为00F2H则:00F2H=0100+2+rel

42、rel=0F0H.5控制转移指令第50页/共69页第五十一页,共70页。3、长跳转指令、长跳转指令(zhlng)LJMP addr16;addr150PC无条件跳转到指定(zhdng)地址,地址空间为64KB程序存贮器地址。4、基寄存器加变址寄存器间接、基寄存器加变址寄存器间接(jin ji)转移指令转移指令JMP A+DPTR;(;(A)+(DPTR) PCeg: P96 例38PM:MOVR1,A RLA ADDA,R1 MOVDPTR,#PMTB JPA+DPTRPMTB:LJMPPM0 LJMPPM1 LJMPPM2 LJMPPM3 LJMPPM4 LJMPPM5 LJMPPM6.5控

43、制转移指令第51页/共69页第五十二页,共70页。1、测试、测试(csh)条件符合转移指令条件符合转移指令JZ rel ;(A)=0,(PC)+2+rel (PC),(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)JBBit,rel ;(Bit)=1,(PC)+3+rel (PC), (Bit)=0,(PC)+3 (PC)JNB

44、Bit,rel ; (Bit)=0,(PC)+3+rel (PC) (Bit)=1,(PC)+3 (PC)JBCBit,rel ; (Bit)=1,(PC)+3+rel (PC),且清(Bit)=0 (Bit)=0,(PC)+3 (PC)2、比较不相等、比较不相等(xingdng)转移指令转移指令a、CJNEA,direct,rel(A)=(direct),(PC)+3(PC),0CY(A)(direct),(PC)+3+rel(PC),0CY(A) data ,(PC)+3+rel(PC),0CY(A) data ,(PC)+3+rel(PC),0CY(Rn) data ,(PC)+3+re

45、l (PC),0 CY( (Ri) ) data ,(PC)+3+rel (PC),1 CY二、条件转移二、条件转移(zhuny)指令指令第53页/共69页第五十四页,共70页。 执行下面(xi mian)程序后将根据A的内容大于60H、等于60H、小于60H三种情况作不同处理:CJNEA,#60H,NEQ;(A)不等于(dngy)60H转移EQ: ;(A)等于(dngy)60H处理程序NEQ: JCLOW;(A) 60H 处理程序LOW:;(A) 60H 处理程序二、条件转移指令二、条件转移指令第54页/共69页第五十五页,共70页。3、减、减1不为不为0转移转移(zhuny)指令指令DJN

46、ZRn,rel ;(Rn)-1(Rn) (Rn)=0,(PC)+2 (PC) (Rn)0,(PC)+2+rel (PC)DJNZdirect,rel ;(direct)-1(direct) (direct)=0,(PC)+3(PC) (direct)0,(PC)+3+rel (PC)子程序:具有一定功能子程序:具有一定功能(gngnng)的公用程序段。在子程序的末尾一般是一条返回指令(的公用程序段。在子程序的末尾一般是一条返回指令(RET)。)。当主程序调用子程序时 把下一条指令(zhlng)地址(SP),(SP+2) (SP)子程序起始地址 PC子程序执行返回时:把调用子程序处下一条指令地址

47、从堆栈中取出PC,(SP)-2(SP)二、条件转移指令二、条件转移指令三、调用和返回指令三、调用和返回指令第55页/共69页第五十六页,共70页。DL: MOV30H,# 03H;03H 30H,置初值DL0: MOV31H,# 0F0H;0F0H 31H,置初值DL1: DJNZ31H,DL1;(31H)-1 31H,(31H)不为0 重复(chngf)执行 DJNZ30H,DL0;(30H)-1 30H,(30H)不为(b wi)0 转DL0 求反 AJMPDL;转DL第56页/共69页第五十七页,共70页。一般而言,可以(ky)多次调用子程序,子程序调用可以(ky)嵌套。执行返回主程序指

48、令执行返回主程序指令子程序SUB执行调用子程序指令执行调用子程序指令主程序MAINCPU正在执行主程序CPU执行子程序AB主程序二次调用子程序示意图B主程序MAIN子程序SUB1子程序SUB2转向SUB1转向SUB2返回SUB1返回MAIN二级子程序嵌套示意图三、调用三、调用(dioyng)和返回指令和返回指令第57页/共69页第五十八页,共70页。压栈1、短调用、短调用(dioyng)指令指令ACALL addr11(PC)+2 PC (SP)+1 SP,(PC70) (SP)低 (SP)+1 SP,(PC158) (SP)高 PC15PC14PC13PC12PC11a10a9a0 PC(转

49、向(zhunxing)执行子程序)eg: (SP)=60H,标号MA值为0123H。SUB起始(q sh)地址0345HMA:ACALL SUB(PC)+2 (SP)=61H,(61H)=25H (SP)=62H,(62H)=01H 00000 01101000101=0345H PC=0125HPC1511=00000ACALL的下一条指令第一字节与子程序的入口地址必须在同一区内。三、调用和返回指令三、调用和返回指令第58页/共69页第五十九页,共70页。2、长调用、长调用(dioyng)指令指令压栈LCALL addr16; addr16 64KB地址(dzh)区(PC)+3 PC (SP

50、)+1 SP,(PC70) (SP)低 (SP)+1 SP,(PC158) (SP)高 addr16 PCeg: (SP)=60H,START:标号(bioho)地址 0100H。DIR:标号(bioho)地址 8100HSTART:LCALL DIR (SP)=61H,(61H)=03H (SP)=62H,(62H)=01H (PC)=8100H(PC)=0103H三、调用和返回指令三、调用和返回指令第59页/共69页第六十页,共70页。3、返回、返回(fnhu)指令指令、从子程序返回(fnhu)RET (SP)-1 SP ,(SP) PC70 (SP)-1 SP(SP) PC158即把堆栈

51、(duzhn)顶的内容送到PC寄存器中。eg: (SP)=62H,(61H)=30H,(62H)=07HRET (SP)=61H;(61H)PC70 , PC70=30H (SP)=60H (PC)=0730H,从0730H处开始执行。 07HPC158, PC158=07H三、调用和返回指令三、调用和返回指令第60页/共69页第六十一页,共70页。、从中断(zhngdun)返回RETI (SP)-1 SP,(SP) PC70 (SP)-1 SP(SP) PC158中断返回指令把栈顶的内容送到PC寄存器中,同时释放中断逻辑使之能接受(jishu)同级的另一中断请求。CPU执行RETI指令后至少

52、要再执行一条指令,才能响应新的中断请求。四、空操作(cozu)指令NOP;除(PC)+1 (PC)外无任何操作。一般用于延时。三、调用和返回指令三、调用和返回指令第61页/共69页第六十二页,共70页。ADDINCIncrementSUBBSubtract With BorrowADDCAddwithCarryflagDECDecrementMULMultiplyDIV DivideDADecimalAdjustANLAnd LogicalCLRClearXRLExclusive-OR LogicalORLOR LogicalCPLComplement LogicalRLRotate Left

53、RLCRotate Left with Carry flagRRRotate RightRRCRotate Right with Carry flagSWAP MOVMoveMOVCMove CodeMOVXMove External RAMPUSHPOPXCHExchangeXCHDExchange low-order Digit第62页/共69页第六十三页,共70页。ACALLAbsolute Subroutine CallLCALLLong Subroutine CallRETReturn from SubroutineRETIReturn from InterruptAJMPAbsolute JumpLJMPLong JumpSJMPShort JumpJZJump if Accumulator is ZeroJNZJump if Accumulator is Not ZeroJCJump if Carry flag is SetJNCJump if No Carry flagJBJump if direct Bit SetJNBJump if direct Bit Not SetJBCJump if direct Bit Set & Clear BitCJ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论