湘潭大学单片机课件第三章

上传人:hao****021 文档编号:240726862 上传时间:2024-05-03 格式:PPT 页数:69 大小:694.50KB
返回 下载 相关 举报
湘潭大学单片机课件第三章_第1页
第1页 / 共69页
湘潭大学单片机课件第三章_第2页
第2页 / 共69页
湘潭大学单片机课件第三章_第3页
第3页 / 共69页
点击查看更多>>
资源描述
湘 潭 大 学单片机原理及应用编著组第三章 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 控制转移类指令湘 潭 大 学单片机原理及应用编著组汇编程序机器语言编译、解释机器语言eg:MOV R0,#data01111000#datan计算机的指令系统是一套控制计算机操作的编码计算机的指令系统是一套控制计算机操作的编码机器语言机器语言。计算机。计算机只能识别和执行机器语言的指令只能识别和执行机器语言的指令。但机器语言实在太枯燥,太难记忆了。但机器语言实在太枯燥,太难记忆了。3.1 汇编语言指令格式汇编语言,高级语言汇编语言,高级语言湘 潭 大 学单片机原理及应用编著组由25个英文字母组成的助记符至少一个空格用“,”隔开,操作个数可为无,1,2,3操作码:反映了指令的功能。操作数:反映了指令的对象。eg:MOV A,#01;01 A7401 ADDC A,R1;(A)+(R1)+CY A 393.1.1汇编语言格式 由操作助记符和操作数字段组成汇编指令指能汇编成机器语言代码的指令。格式:操作码 操作数1,操作数2,操作数3湘 潭 大 学单片机原理及应用编著组3.1.2 汇编伪指令伪指令:汇编时不产生机器语言代码的指令,仅提供汇编控制信息。一、定位伪指令 ORG m m:一般为十六进制数。m指出在该伪指令后的指令的汇编地址,即生成的机器指令起始存贮器地址。显然,当使用多条ORG m伪指令时,应注意其后生成的机器指令存放地址不应重叠不应重叠。eg:ORG 0START:SJMP MAIN ORG 0BH LJMP PTFO ORG 40HMAIN:湘 潭 大 学单片机原理及应用编著组二、定义字节伪指令 标号:DB X1、X2 Xn3.1.2 汇编伪指令 ORG1000HDB0AAH SJ-DATA:DB25,25H ZFC-DATA:DBMCS-51经汇编后,从地址1000H处存贮器的内容为:(1000H)=AAH(1001H)=19H(1002H)=25H(1003H)=4DH(1004H)=43H(1005H)=53H(1006H)=2DH(1007H)=35H(1008H)=31H湘 潭 大 学单片机原理及应用编著组三、字定义伪指令 标号:DW Y1、Y2 Yn3.1.2 汇编伪指令通知汇编程序从当前ROM地址开始,保留存贮单元,并存入DW后面的数据。存放时高8位在前,低8位在后。例3-3 ORG1000H DW1234HSJ_DATA:DW56H,2000经汇编后,从地址1000H处存贮器的内容为:(1000H)=12H(1001H)=34H(1002H)=00H(1003H)=56H(1004H)=07H(1005H)=D0H湘 潭 大 学单片机原理及应用编著组四、四、EQU EQU 赋值伪指令赋值伪指令 字符名称 EQU 项(数或汇编符号)3.1.2 汇编伪指令例:3-4:AAEQU R1MOV A,AA 例:3-5:D10EQU 10ADD_YEQU 07ABHMOVA,D10LCALLADD_Y EQU伪指令是把“项”赋给“字符名称”,注意这里的“字符名称”不同于标号(其后没有冒号),但它是必须的。用EQU赋过值的符号名可以用作数据地址、代码地址、位地址或是一个立即数。湘 潭 大 学单片机原理及应用编著组五、五、DSDS定义存贮空间伪指令定义存贮空间伪指令 DS 表达式3.1.2 汇编伪指令在汇编时,从指定地址开始保留DS之后“表达式”的值所规定的存贮单元。ORG1000HDS07HDB20H,20 DW12H 经汇编后,从地址1000H开始保留7个单元,然后从1007H处存贮器的内容为:(1007H)=20H(1008H)=14H(1009H)=00H(100AH)=12H湘 潭 大 学单片机原理及应用编著组六、六、DATADATA数据地址赋值伪指令数据地址赋值伪指令 字符名称 DATA 表达式3.1.2 汇编伪指令 这里的“字符名称”与标号不同(其后没有冒号),但它是必须的,其功能是把“表达式”的值赋给左边的“字符名称”。DATA伪指令与EQU伪指令的主要区别是:EQU定义的定义的“字符名称字符名称”必须先定义后使必须先定义后使用用,而DATA定义的“字符名称”没有这种限制,故DATA伪指令通常用在源程序的开头或末尾。例3-7:ORG 0100H AA DATA 35H DPTRA DATA0AA00HMOV A,AA ;(35H)AMOV DPTR,#DPTRA ;0AA00H DPTR湘 潭 大 学单片机原理及应用编著组七、七、BITBIT定义位地址符号伪指令定义位地址符号伪指令 字符名称 BIT 位地址3.1.2 汇编伪指令 这里的“字符名称”与标号不同(其后没有冒号),但它是必须的,其功能是把BIT之后的“位地址”值赋给“字符名称”。例3-6:P11BITPA2BIT02HMOVC,P11MOVA2,C八、汇编结束伪指令END指出汇编结束,其后即使还有指令,汇编程序也不作处理。湘 潭 大 学单片机原理及应用编著组3.2 MCS-51的寻址方式 在高级语言编程时,程序设计人员不必关心程序和数据的内存空间安排问题。但在汇编语言程序设计时,要针对系统的硬件环境编程,数据的存放、传送、运算都要通过指令来完成,编程者必须自始至终都十分清楚操作数的位置,以便将它们传送至适当的空间去操作。寻址方式寻址方式就是如何找到存放操作数的地址,把操作数提取出来的方法。MCS51指令的系统的指令数的寻址方式主要有八八种种:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基寄存器加变址寄存器间接寻址、相对寻址、位寻址、页面寻址。湘 潭 大 学单片机原理及应用编著组一、寄存器寻址 由指令某一寄存器的内容作为操作数的寻址方式。eg:INC R0;(R0)+1 R0INC R0指令执行过程示意图3.2 MCS-51的寻址方式湘 潭 大 学单片机原理及应用编著组在指令中含有操作数的直接地址,该地址指出了参与计算或传送的数据所在的字节单元或位的地址。eg:ANL 70H,#48H;(70H)48H70H 二、直接寻址操作数的直接地址3.2 MCS-51的寻址方式湘 潭 大 学单片机原理及应用编著组在指令中某一个寄存器的内容作为操作数的地址的寻址方式,用符号表示。eg:ANLA,R0;(A)(R0)A 寄存器间接寻址使用所选定的寄存器中R0和R1作地址指针(对栈操作时用堆栈指针SP)来寻址内部RAM(0FFH),也适用于访问外部扩展的数据存贮器,用R0、R1或DPTR作为地址指针。三、寄存器间接寻址3.2 MCS-51的寻址方式湘 潭 大 学单片机原理及应用编著组操作数包含在指令字节中eg:MOV A,#70H 以16位的程序计数器PC或数据指针DPTR作为基寄存器,以8位的累加器A作为变址寄存器,内容相加形成16位新的地址。MOVC A,A+PC;(A)+(PC)AMOVC A,A+DPTR;(A)+(DPTR)A 五、基寄存器加变址寄存器间接寻址四、立即寻址3.2 MCS-51的寻址方式湘 潭 大 学单片机原理及应用编著组 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的寻址方式六、相对寻址 相对寻址方式是以当前的程序计数器PC值加上指令中给定的偏移量rel所得的结果作为转移地址。一般将相对转移指令操作码所在地址称为源地址,转移后的地址称为目的地址,则有:目的地址=源地址+相对转移指令字节数+rel 湘 潭 大 学单片机原理及应用编著组3.2 MCS-51的寻址方式七、位寻址 在计算机中,某些特定的操作数可以按8位二进制数中的某一位为单位进行存取和操作。位寻址方式是其操作数是8位二进制中的某一位。例315:MOVC,01H;01H为位地址,表示(20H).1的内容传送到进位累加器。例316:SETBEA表示中断允许寄存器IE的位7置1。湘 潭 大 学单片机原理及应用编著组3.2 MCS-51的寻址方式八、页面寻址 当用寄存器间接寻址方式访问外部扩展的数据存贮器,当用R0、R1作地址指针访问片外RAM时的寻址方式称为页面寻址。页面地址由P2口的内容决定,页面内的地址由R0或R1的内容决定。例317:MOVP2,#0A0H MOVR0,#01H MOVA,#10H MOVXR0,A 湘 潭 大 学单片机原理及应用编著组(1)对程序存贮器只能采用立即寻址和基寄存器加变址寄存器间接寻址寻址方式。(2)对特殊功能寄存器空间只能采用直接寻址方式(可以用符号来代表地址),不能采用寄存器间接寻址方式。(3)内部RAM高128B只能采用寄存器间接寻址方式,不能采用直接寻址方式。(4)内部RAM低128B 既能采用寄存器间接寻址方式,又能采用直接寻址方式。(5)外部扩展的数据存贮器只能采用MOVX指令访问。虽然MCS51单片机的寻址方式有多种,但指令对哪一个存贮器空间进行操作是由指令的操作码和寻址方式确定的。总的来说,具有以下几点原则:3.2 MCS-51的寻址方式湘 潭 大 学单片机原理及应用编著组MCS51汇编语言有42种操作码助记符,33种操作功能,111种指令,可分为:数据传送类(29)算术操作类(24)逻辑操作类(24)位操作类 (17)控制转移类(17)3.3 MCS-51的指令系统湘 潭 大 学单片机原理及应用编著组.1 数据传送类指令数据数据传送类指令一般的操作是把源操作数传送到目的操作数,指令执行后,一般一般是源操作数不改变,目的操作数修改为源操作数。可以在累加器A、工作寄存器R0R7、内部数据存贮器、外部数据存贮器和程序存贮器之间进行。这类指令有:MOV,MOVX,MOVC,XCH,XCHD,SWAP,POP,PUSH共8种。一一、以累加器A为目的操作数的指令MOV A,Rn ;寄存器寻址 MOV A,Direct;直接寻址MOV A,Ri ;间接寻址MOV A,#data ;立即寻址(Rn)A 寄存器的内容作为含有操作数的直接地址。i=0,1 寄存器的内容作为含有操作数的地址直接包含操作数把源操作数的内容送ACC,源操作数的内容不变化。湘 潭 大 学单片机原理及应用编著组eg:MOVA,R6 ;(R6)AMOV A,70H ;(70H)AMOV A,R0 ;(R0)AMOV A,#78H ;78HA二、以Rn为目的操作数的指令MOV Rn,A ;寄存器寻址 MOV Rn,Direct ;直接寻址MOV Rn,#data;立即寻址n=07eg:MOVR2,A ;(A)R2 MOV R7,70H ;(70H)R7MOV R7,#0A0H ;0A0HR7.1 数据传送类指令源操作数的内容送入当前工作寄存器区的R0R7湘 潭 大 学单片机原理及应用编著组MOV Direct,A;寄存器寻址 MOV Direct,Rn;寄存器寻址 MOV Direct,Direct ;直接寻址MOV Direct,Ri ;寄存器间接寻址MOV Direct,#data ;立即寻址三、以直接寻址的单元为目的操作数的指令eg:MOVP1,A ;MOV 90H,A ;(A)P1 MOV 70H,R2 ;(R2)(70H)MOV 0E0H,78H;(78H)AMOV 40H,R0 ;(R0)40HMOV 01H,#80H;80H 01H.1 数据传送类指令 源操作数的内容送入直接地址指出的存贮单元。湘 潭 大 学单片机原理及应用编著组四、以寄存器间接寻址的单元为目的操作数的指令MOV Ri,A ;寄存器寻址 MOV Ri,Direct ;直接寻址MOV Ri,#data ;立即寻址eg:MOV R1,A ;(A)(R1)MOV R0,70H;(70H)(R0)MOV R1,#80H ;80H (R1).1 数据传送类指令源操作数的内容送入R0或R1指出的内部RAM中。湘 潭 大 学单片机原理及应用编著组五、16位数据传送指令 MOV DPTR,#data16 ;立即寻址 把16位立即数送到数据指针DPTR。高8位 DPH,低8位 DPL eg:MOV DPTR,#8000H.1 数据传送类指令六、查表指令1、MOVC A,A+PC;(A)+PC)A (A)作为无符号数和PC内容(下一条指令的起始地下一条指令的起始地址址)相加后得到一个16位的地址,将该地址的内容 A湘 潭 大 学单片机原理及应用编著组2、MOVC A,A+DPTR;(A)+DPTR)A (A)作为无符号数和DPTR内容相加后得到一个16位的地址,将该地址的内容 Aeg:(DPTR)=8100H,(A)=40H MOVC A,A+DPTR;(?H)Aeg:(A)=30H,当前地址1000HMOVC A,A+PC;(?H)Aeg:ORG8000HMOV A,#30MOVC A,A+PC;(?H)AORG8030HDB41H,42H,43H,44H,45H.1 数据传送类指令湘 潭 大 学单片机原理及应用编著组.1 数据传送类指令七、累加器A与片外RAM数据传送指令eg:MOV DPTR,#0650H ;设(0650H)=20H MOV R0,#0FAH;(0FAH)=10H MOV P2,#20HMOVX A,R0;(20FAH)A MOVX DPTR,A ;(A)650H单元(A)外部数据存贮器MOVXA,DPTR;MOVXA,Ri ;MOVX DPTR,A;MOVX Ri,A ;外部数据存贮器的内容 A湘 潭 大 学单片机原理及应用编著组八、栈操作指令1、压栈指令 PUSH Direct;寄存器间接寻址 eg:(SP)=60H,(A)=30H,(B)=70H.1 数据传送类指令 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单元中。湘 潭 大 学单片机原理及应用编著组 POP DPL ;(61H)DPL,SP-1 SP ;DPL=30H SP=60H POP DPH ;(62H)DPH,SP-1 SP ;DPH=70H,SP=61H2、弹栈指令 POP Direct;寄存器间接寻址 eg:(SP)=62H,(62H)=70H,(61H)=30H.1 数据传送类指令 堆栈指针SP寻址的内部RAM单元送入直接地址指 出的字节单元中;SP-1 SP 湘 潭 大 学单片机原理及应用编著组九、字节交换指令内容交换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.1 数据传送类指令eg:(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湘 潭 大 学单片机原理及应用编著组eg:(A)=12H,(R1)=30H,(30H)=34H XCHD A,R1 (A)=12H SWAPA.1 数据传送类指令湘 潭 大 学单片机原理及应用编著组MCS51算术运算指令+,-,*,/,增量(加1),减量(减1)指令,执行结果将使进位(Cy)、辅助进位(AC),溢出(OV)标志置位或复位。但加1和减1指令不影响以上标志。其操作助记符有:ADD,ADDC,SUBB,DA,INC,DEC,MUL,DIV 8种。一、不带进位的加法指令ADDA,Rn;(A)+(Rn)A,n=07ADDA,Direct;(A)+(Direct)AADDA,Ri;(A)+(Ri)A,i=0,1ADDA,#data;(A)+data A.2 算术运算类指令湘 潭 大 学单片机原理及应用编著组eg1:(A)=53H,(R0)=0FCHADD A,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)=0AFHADD A,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二、带进位的加法指令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.2 算术运算类指令湘 潭 大 学单片机原理及应用编著组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.2 算术运算类指令三、带进位减法指令SUBB A,Rn;(A)-(Rn)-CY ASUBB A,Direct;(A)-(direct)-CY ASUBB A,Ri;(A)-(Ri)-CY A SUBB A,#data;(A)-data-CY A 湘 潭 大 学单片机原理及应用编著组.2 算术运算类指令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四、增量指令(加1)指令INC A;(A)+1 AINC Rn;(Rn)+1 Rn INC Ri;(Ri)+1 (Ri),i=0,1INC DPTR;(DPTR)+1DPTR INC Direct;(direct)+1 direct这组指令除对A操作影响P标志外不影响其它标志湘 潭 大 学单片机原理及应用编著组.2 算术运算类指令五、减量(减1)指令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;0FH-1 A,(A)=0EH19H-1 R7,(R7)=18H00H-1 (30H),(30H)=0FFH(40H)-1(40H),(40H)=0FEH湘 潭 大 学单片机原理及应用编著组DAA六、十进制调整指令 对累加器中由上一条加法指令(加数和被加数均为压缩的BCD 码)所获得的8位结果进行调整,使它调整为压缩BCD 码的数。eg:(A)=0FFH,(R3)=0FH,(30H)=0F0H,(R0)=40H (40H)=00HINC R3;(R3)=10HINC 30H;INC R0;(30H)=0F1H(40H)=01H(A)=00HINC A;BCD码二进制表示的十进制数。而一个字节为8位,可以表示两个BCD码组合成压缩的BCD 码。(最大的压缩BCD 码数为99H)。.2 算术运算类指令湘 潭 大 学单片机原理及应用编著组ACC0ACC39吗?AC=1否?(A)+06H AACC4ACC79吗?CY=1否?(A)+60H A结束开始YNNYYNNYA309或AC=1 A30+6A A749或C=1 A74+6A.2 算术运算类指令湘 潭 大 学单片机原理及应用编著组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 01 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位无符号数的乘法操作,乘积为16位,低8位放在A中,高8位放在B中。若积大于255,则置位OV标志,CY总为0。MULABeg:(A)=50H,(B)=0A0H(B)=32H,(A)=00H,积为3200H,CY=0,OV=1MULAB;七、乘法指令.2 算术运算类指令湘 潭 大 学单片机原理及应用编著组DIVAB;(A)8位无符号数除以(B)8位无符号数,所得商的整数放在A中,余数放在B中。一般(A)/(B)的商(A)(A)/(B)的余(B)CY=0,OV=0当(B)=0时,(A),(B)中内容均不确定,且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八、除法指令.2 算术运算类指令湘 潭 大 学单片机原理及应用编著组.3 逻辑运算类指令一、对累加器A的单操作数的逻辑操作指令 包括移位、与、或、非、异或、清除、求反等操作。其助记符有: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次?湘 潭 大 学单片机原理及应用编著组A7A0右移8次?右移9次?5、RRA;右移1位,Bit7 Bit6,Bit0 Bit7A7A0CY6、RRCA;(A)和CY一起向右1位。CYBit7,Bit Bit6,Bit0 CY7、累加器半字节交换SWAP A;(Bit7Bit4)(Bit3 Bit0)互换。设(A)=12H,执行指令:SWAP A;(A)=21H.3 逻辑运算类指令湘 潭 大 学单片机原理及应用编著组二、二、两个操作数的逻辑操作指令两个操作数的逻辑操作指令1、逻辑与指令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;(direct)data direct 按位逻辑与操作,结果存放到目的操作数中。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 湘 潭 大 学单片机原理及应用编著组ORL Direct,A;(direct)(A)direct ORLA,#data;(A)dataA ORL Direct,#data;(direct)data direct按位逻辑或操作,结果存放到目的操作数中。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、逻辑或指令ORLA,Rn;(A)(Rn)A ORLA,Direct;(A)(Direct)A二、二、两个操作数的逻辑操作指令两个操作数的逻辑操作指令.3 逻辑运算类指令湘 潭 大 学单片机原理及应用编著组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、逻辑异或指令XRLA,Rn;(A)(Rn)AXRLA,Direct;(A)(direct)AXRLA,Ri;(A)(Ri)AXRLA,#data;(A)dataA 按位逻辑异或操作,结果存放到目的操作数中。二、二、两个操作数的逻辑操作指令两个操作数的逻辑操作指令.3 逻辑运算类指令湘 潭 大 学单片机原理及应用编著组(20H)6CY,CY=0CY P1.0或(90H)0位操作指令是以进位位CY(PWS.7)作为累加器C以RAM(20H2FH)和SFR(8位倍数地址)内的位寻址区的位单元作为操作数,进行位变量的传送、修改和逻辑操作。一、位变量传送指令一、位变量传送指令MOV C,bit;(bit)CYMOV bit,C;CY bit位传送必须经过累加器C来进行。eg:MOVC,06H;MOV P1.0,C ;设CY=1,(06H)=22H,(20H)=0BFH.4 位操作指令湘 潭 大 学单片机原理及应用编著组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 位操作指令二、位变量修改指令二、位变量修改指令湘 潭 大 学单片机原理及应用编著组eg:MOVC,P1.0;ANL C,P1.1 ;(P1.0)CY ANL C,/P1.2 ;MOV P3.0,C ;CY P3.0ANLC,Bit;CY(Bit)CYANLC,/Bit;CY(Bit)CY,Bit本身内容不变(P1.0)(P1.1)CY((P1.0)(P1.1))(P1.2)CY(P3.0)=(P1.0)(P1.1)(P1.2)三、位变量逻辑与、或运算指令三、位变量逻辑与、或运算指令.4 位操作指令湘 潭 大 学单片机原理及应用编著组ORLC,Bit;CY (Bit)CYORLC,/Bit;CY (Bit)CY,Bit本身内容不变eg:CY=0,P1=0ORLC,/PCY=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 位操作指令湘 潭 大 学单片机原理及应用编著组1、短跳转指令、短跳转指令AJMP addr11;PC+2PC,指令中 addr100 PC100这是2KB范围内的无条件跳转指令,转移到指定地址,地址为:PC15PC11a10a9a0 PC。MCS51把存贮空间划分为32个区,每个区为2KB字节。AJMP的下一条指令第一个字节与跳转的入口地址必须在同一区内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控制转移指令一、一、无条件转移指令湘 潭 大 学单片机原理及应用编著组2、相对短跳转指令、相对短跳转指令SJMP rel;PC+2+relPCrel:-128127rel:-128127,负数表示向后后转移,正数表示向前前转移。编程时,rel往往用一个往往用一个标号来代替标号来代替,由汇编程序在汇编过程中自动计算偏移字节数,并填入指令代码中。当手工汇编时,rel一般用一般用补码补码表示表示。eg:KRD:SJMPPKRD标号PKRD 的地址值为0123H则:0123H=0100+2+relrel=21H 设 KRD的地址为0100H 设 KRD的地址为0100H标号PKRD 值为00F2H则:00F2H=0100+2+relrel=0F0H.5控制转移指令湘 潭 大 学单片机原理及应用编著组3、长跳转指令、长跳转指令LJMP addr16;addr150PC无条件跳转到指定地址,地址空间为64KB程序存贮器地址。4、基寄存器加变址寄存器间接转移指令、基寄存器加变址寄存器间接转移指令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控制转移指令湘 潭 大 学单片机原理及应用编著组1、测试条件符合转移指令、测试条件符合转移指令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)JNBBit,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、比较不相等转移指令、比较不相等转移指令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+rel (PC),0 CY((Ri))data,(PC)+3+rel (PC),1 CY二、条件转移指令二、条件转移指令湘 潭 大 学单片机原理及应用编著组 执行下面程序后将根据A的内容大于60H、等于60H、小于60H三种情况作不同处理:CJNE A,#60H,NEQ;(A)不等于60H转移EQ:;(A)等于60H处理程序NEQ:JCLOW;(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)。当主程序调用子程序时 把下一条指令地址(SP),(SP+2)(SP)子程序起始地址 PC子程序执行返回时:把调用子程序处下一条指令地址从堆栈中取出PC,(SP)-2(SP)二、条件转移指令二、条件转移指令三、调用和返回指令三、调用和返回指令湘 潭 大 学单片机原理及应用编著组DL:MOV30H,#03H;03H 30H,置初值DL0:MOV31H,#0F0H;0F0H 31H,置初值DL1:DJNZ31H,DL1;(31H)-1 31H,(31H)不为0 重复执行 DJNZ30H,DL0;(30H)-1 30H,(30H)不为0 转DL0 求反 AJMPDL;转DL湘 潭 大 学单片机原理及应用编著组一般而言,可以多次调用子程序,子程序调用可以嵌套。执行返回主程序指令执行返回主程序指令子程序SUB执行调用子程序指令执行调用子程序指令主程序MAINCPU正在执行主程序CPU执行子程序AB主程序二次调用子程序示意图B主程序MAIN子程序SUB1子程序SUB2转向SUB1转向SUB2返回SUB1返回MAIN二级子程序嵌套示意图三、调用和返回指令三、调用和返回指令湘 潭 大 学单片机原理及应用编著组压栈1、短调用指令、短调用指令ACALL addr11(PC)+2 PC(SP)+1 SP,(PC70)(SP)低(SP)+1 SP,(PC158)(SP)高 PC15PC14PC13PC12PC11a10a9a0 PC(转向执行子程序)eg:(SP)=60H,标号MA值为0123H。SUB起始地址0345HMA:ACALL SUB(PC)+2 (SP)=61H,(61H)=25H(SP)=62H,(62H)=01H 00000 01101000101=0345H PC=0125HPC1511=00000ACALL的下一条指令第一字节与子程序的入口地址必须在同一区内。三、调用和返回指令三、调用和返回指令湘 潭 大 学单片机原理及应用编著组2、长调用指令、长调用指令压栈LCALL addr16;addr16 64KB地址区(PC)+3 PC(SP)+1 SP,(PC70)(SP)低(SP)+1 SP,(PC158)(SP)高 addr16 PCeg:(SP)=60H,START:标号地址 0100H。DIR:标号地址 8100HSTART:LCALL DIR(SP)=61H,(61H)=03H(SP)=62H,(62H)=01H(PC)=8100H(PC)=0103H三、调用和返回指令三、调用和返回指令湘 潭 大 学单片机原理及应用编著组3、返回指令、返回指令、从子程序返回RET(SP)-1 SP,(SP)PC70(SP)-1 SP(SP)PC158即把堆栈顶的内容送到PC寄存器中。eg:(SP)=62H,(61H)=30H,(62H)=07HRET(SP)=61H;(61H)PC70,PC70=30H(SP)=60H (PC)=0730H,从0730H处开始执行。07HPC158,PC158=07H三、调用和返回指令三、调用和返回指令湘 潭 大 学单片机原理及应用编著组、从中断返回RETI(SP)-1 SP,(SP)PC70(SP)-1 SP(SP)PC158中断返回指令把栈顶的内容送到PC寄存器中,同时释同时释放中断逻辑放中断逻辑使之能接受同级的另一中断请求。CPU执行RETI指令后至少要再执行一条指令,才能响应新的中断请求至少要再执行一条指令,才能响应新的中断请求。四、空操作指令NOP;除(PC)+1 (PC)外无任何操作。一般用于延时。三、调用和返回指令三、调用和返回指令湘 潭 大 学单片机原理及应用编著组ADDINCIncrementSUBB Subtract With BorrowADDCAdd withCarry flagDECDecrementMUL MultiplyDIV DivideDADecimalAdjustANLAnd LogicalCLRClearXRLExclusive-OR LogicalORLOR LogicalCPLComplement LogicalRLRotate LeftRLCRotate Left with Carry flagRRRotate RightRRCRotate Right with Carry flagSWAP 指令助记符注释MOV MoveMOVCMove CodeMOVXMove External RAMPUSH POPXCHExchangeXCHDExchange low-order Digit湘 潭 大 学单片机原理及应用编著组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 BitCJNECompare Jmp if Not EqualDJNZDecrement Jump if Not ZeroNOPNo Operation指令助记符注释湘 潭 大 学单片机原理及应用编著组1、执行前(0E0H)=10H,(78H)=20H执行MOV 0E0H,#78H 后(0E0H)=?H,(78H)=?H2、执行前(0E0H)=10H,(78H)=20H执行MOV 0E0H,78H后(0E0H)=?H,(78H)=?H3、执行前(A)=11H,(R1)=40H,(30H)=22H,(40H)=33H,执行 MOV R1,#30H(A)=?H,(R1)=?H,(30H)=?H,(40H)=?HMOV A,R1后4、执行前(A)=11H,(R0)=40H,(30H)=22H,(40H)=33H,(A)=?H,(R0)=?H,(30H)=?H,(40H)=?HMOV R0,A 后执行MOV R0,#30H单元练习题湘 潭 大 学单片机原理及应用编著组5、执行前SP=60H,(30H)=00H,(31H)=80H执行PUSH 30HSP=?H,(30H)=?H,(31H)=?H,DPTR=?HPUSH 31HPOP DPHPOP DPL 后6、执行前(A)=39H,(R1)=87H,(87H)=16H(A)=?H,(R1)=?H,(87H)=?H执行XCHD A,R1后7、执行:ORG8000HMOV A,#41HMOVC A,A+PC ORG8040HDB1,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=1ADDC A,R1后执行MOV R1,#40H执行MOV R1,#40H9、执行前(A)=70H,(70H)=0C9H,(80H)=90H,CY=1(A)=?H,(70H)=?H,(80H)=?H,CY=?,AC=?,P=?,OV=?SUBB A,#80H后执行MOV 80H,A10、执行前(90H)=10H,(A)=01H(90H)=?H,(A)=?H执行ORL 90H,A后单元练习题湘 潭 大 学单片机原理及应用编著组11、执行前 CY=1,(20H)=04H,(01H)=20HCY=?,(20H)=?H,(01H)=?H 执行MOV C,01H后12、执行前 (2FH)=10H,(25H)=80H(2FH)=?H,(25H)=?H 执行CLR 2FH后13、执行前 CY=0,(P1)=10HCY=?,(P1)=?H执行ORL C,/PANL C,P 后执行:MOV 60H,#80HCJNE A,60H,NEXT NEXT:后(A)=?H,(60H)=?H,CY=?14、执行前 (A)=70H单元练习题湘 潭 大 学单片机原理及应用编著组15、执行前 (SP)=70H,START标号地址为:8000HDELAY子程序地址为:8100H调用START:LCALLDELAY 后(子程序没返回)(PC)=?H,(SP)=?H,(70H)=?,(71H)=?,(72H)=?H16、执行前 (SP)=70H,START标号地址为:8000HDELAY子程序地址为:8100H执行START:LCALLDELAY 后并从子程序返回后(子程序中无错误):(PC)=?H,(SP)=?H,(70H)=??,(71H)=?,(72H)=?H单 元 练 习 题
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!