第3章MCS-51系列单片机的指系统及汇编语言程序设计.ppt
《第3章MCS-51系列单片机的指系统及汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《第3章MCS-51系列单片机的指系统及汇编语言程序设计.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、主要内容主要内容寻址方式寻址方式指令系统指令系统传送与交换指令传送与交换指令算术运算、逻辑运算指令算术运算、逻辑运算指令控制转移指令控制转移指令位操作指令位操作指令伪指令伪指令程序设计举例程序设计举例第第3章章 MCS-51系列单片机的指令系统系列单片机的指令系统及汇编语言程序设计及汇编语言程序设计 计算机通过执行程序完成人们指定的任务,计算机通过执行程序完成人们指定的任务,程序由一条一条指令构成,能为程序由一条一条指令构成,能为CPUCPU识别并执行的识别并执行的指令的集合就是该指令的集合就是该CPUCPU的的指令系统指令系统。MCS-51MCS-51单片机汇编语言单片机汇编语言指令格式指令
2、格式:操作符操作符 目的操作数,源操作数目的操作数,源操作数 操作符指明该指令完成什么操作;操作符指明该指令完成什么操作;操作数是指明该指令的操作对象。操作数是指明该指令的操作对象。目的操作数是存放结果的。目的操作数是存放结果的。目的操作数是存放结果的。目的操作数是存放结果的。指令中操作数提供的方式称为指令中操作数提供的方式称为寻址方式寻址方式。指令中的常用符号指令中的常用符号RnRn:表示当前工作寄存器表示当前工作寄存器R0R0R7R7中的一个。中的一个。RiRi:代表代表R0R0和和R1R1寄存器中的一个,用作间接寻址寄存器。寄存器中的一个,用作间接寻址寄存器。dir:dir:8 8 位直
3、接字节地址(片内位直接字节地址(片内 RAM RAM 和和 SFR SFR)#data:#data:8 8位立即数,即位立即数,即8 8位常数。可以为位常数。可以为2 2进制(进制(B B)、)、1010进进制、制、1616进制(进制(H H)、)、字符(字符()#data16:#data16:表示表示1616位立即数,即位立即数,即1616位常数,取值范围为位常数,取值范围为:#0000H#0000H#0FFFFH#0FFFFHaddr16:addr16:表示表示1616位地址位地址 addr11:addr11:表示表示1111位地址位地址relrel:相对偏移量(为一字节补码)用于相对转移
4、指令中相对偏移量(为一字节补码)用于相对转移指令中bit:bit:位地址,在位地址空间中。位地址,在位地址空间中。$:$:表示当前指令的地址。表示当前指令的地址。指令中直接给出操作数的寻址方式。在指令中直接给出操作数的寻址方式。在5151系列单片机的指令系统中,立即数用一个系列单片机的指令系统中,立即数用一个前面加前面加 “#”号的号的8 8位数位数(#data(#data,如,如#30H)#30H)或或1616位数位数(#data16(#data16,如,如#2052H)#2052H)表示。立即寻表示。立即寻址中的数,称为立即数。址中的数,称为立即数。例如指令:例如指令:MOV AMOV A
5、,#58H#58H;58H58HAA3.1 寻址方式寻址方式3.1.1 立即寻址立即寻址 操作数的地址直接出现在指令中。操作数的地址直接出现在指令中。寻址对象:寻址对象:内部数据存贮器:使用它的地址。内部数据存贮器:使用它的地址。特殊功能寄存器:既可使用它的地址,也可以直接使用特殊功能寄存器:既可使用它的地址,也可以直接使用寄存器名。寄存器名。位地址空间位地址空间 程序存储器空间程序存储器空间例:例:例:例:MOV AMOV AMOV AMOV A,40H ;40H ;40H ;40H ;(40H40H40H40H)A A A A MOV 40H MOV 40H MOV 40H MOV 40H
6、,41H ;41H ;41H ;41H ;(41H41H41H41H)(40H40H40H40H)MOV P0MOV P0MOV P0MOV P0,#45H ;#45H ;#45H ;#45H ;45HP045HP045HP045HP0 MOV 80H MOV 80H MOV 80H MOV 80H,#45H;#45H;#45H;#45H;45HP045HP045HP045HP0 MOV C MOV C MOV C MOV C,18H ;18H ;18H ;18H ;位地址位地址1818HCHCHCHC3.1.2 3.1.2 直接寻址直接寻址操作数操作数存放在寄存器中。存放在寄存器中。寻址对象
7、:寻址对象:A A,B B,C,DPTRC,DPTR,R0R0R7 R7。B B仅仅在乘除法指令中为寄存器寻址,在其他指在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。令中为直接寻址。A A可以可以寄存器寻址又可以直接寻址,直接寻址寄存器寻址又可以直接寻址,直接寻址时写作时写作ACCACC 例如:例如:MOV AMOV A,R0 R0 ;R0AR0A MUL AB MUL AB ;A*BBAA*BBA ADD A ADD A,ACC ACC;A+AAA+AA3.1.3 3.1.3 寄存器寻址寄存器寻址 操作数存放在以寄存器内容为地址的单元中,用做间址的操作数存放在以寄存器内容为地址的单元中
8、,用做间址的寄存器为寄存器为RiRi(i=0i=0,1 1)、)、DPTRDPTR。对片内的间接寻址用对片内的间接寻址用RiRi(i=0i=0,1 1)如:如:MOV R0MOV R0,#20H#20H MOV R0MOV R0,A A ;A(20H)A(20H)对片外的间接寻址可用对片外的间接寻址可用RiRi(i=0i=0,1 1)或)或DPTRDPTR 如:如:MOVX DPTRMOVX DPTR,A A;AA以以DPTRDPTR的内容为地址的外部的内容为地址的外部RAMRAM中中 MOVX R1,A MOVX R1,A ;AA以以P2 R1P2 R1内容为地址的外部内容为地址的外部RAM
9、RAM中中 PUSHPUSH和和POPPOP指令的源操作数是以指令的源操作数是以SPSP间接寻址间接寻址 注意:寄存器间接寻址不能访问注意:寄存器间接寻址不能访问SFRSFR MOV R1,#81H MOV R1,#81H MOV A,R1 MOV A,R1 ;不能访问;不能访问SPSP,只能用,只能用 MOV A,SPMOV A,SP3.1.4 3.1.4 寄存器间址寄存器间址 变址寻址只能访问程序存储器。操作数所在位置变址寻址只能访问程序存储器。操作数所在位置的地址由的地址由DPTRDPTR或或PCPC寄存器与寄存器与A A的内容相加后形成。其中的内容相加后形成。其中累加器累加器A A内容
10、是可变的。变址寻址只有三条指令。内容是可变的。变址寻址只有三条指令。MOVC A,A+DPTR MOVC A,A+DPTR ;(A+DPTR)A(A+DPTR)A MOVC A,A+PC MOVC A,A+PC ;(A+PC)A(A+PC)A JMP JMP A+DPTR A+DPTR ;A+DPTRPCA+DPTRPC注意:注意:A A的内容是无符号数。的内容是无符号数。PCPC值是指令的当前值是指令的当前PCPC值,即下条指令的值,即下条指令的PCPC值值3.1.5 3.1.5 变址寻址变址寻址3.1.6 3.1.6 相对寻址相对寻址 变址寻址只能访问程序存储器。相对寻址是将程序计数器变址
11、寻址只能访问程序存储器。相对寻址是将程序计数器PC的当前值与指令第二字节给出的偏移量相加,从而形成转移的当前值与指令第二字节给出的偏移量相加,从而形成转移的目标地址。的目标地址。如:如:JZ 61H注意:注意:相对偏移量是一字节有符号数,用补码表示,偏移范相对偏移量是一字节有符号数,用补码表示,偏移范围是:围是:-128-128+127+127。PCPC值是指令的当前值是指令的当前PCPC值,即下条指令的值,即下条指令的PCPC值。值。源程序中偏移量常用符号地址表示。源程序中偏移量常用符号地址表示。对可位寻址的位地址寻址。包括片内对可位寻址的位地址寻址。包括片内RAMRAM的位地址空间和可位寻
12、址的的位地址空间和可位寻址的SFRSFR(地址能被(地址能被8 8整整除)除)如:如:MOV CMOV C,20H20H ;位寻址;位寻址 MOV AMOV A,20H20H ;字节寻址;字节寻址 以上两条指令究竟是位寻址还是字节寻址,以上两条指令究竟是位寻址还是字节寻址,根据两操作数类型一致的原则,由另一个操作根据两操作数类型一致的原则,由另一个操作数决定。数决定。3.1.73.1.7 位寻址位寻址立即立即寻址寻址直接直接寻址寻址寄存器寄存器寻址寻址寄存器寄存器间接寻址间接寻址变址变址寻址寻址相对相对寻址寻址位寻址位寻址片内片内RAMRAM低低128B128B单元单元工作寄存器工作寄存器组组
13、R0R0R7R7特殊功特殊功能寄存能寄存器器SFRSFRA A、B B、DPTRDPTR、C C程序存储器程序存储器片外片外RAMRAM位地址空间位地址空间寻址方式与存储空间的对应关系寻址方式与存储空间的对应关系 dirRi Rn#dataAMOV A,Rn#data dir RiMOV dir,A Rn,Ri#data dir MOV Ri,A dir#data1.内部内部RAM、SFR之间的传送之间的传送MOV指令指令MOV Rn,A dir#data3.2 3.2 指令系统指令系统3.2.1 3.2.1 数据传送与交换指令数据传送与交换指令例例 R1=20HR1=20H,(,(20H20
14、H)=55H=55H,MOV AMOV A,R1 R1 执行后,执行后,A=55HA=55H。例例 (40H40H)=30H=30H,MOV R7MOV R7,40H 40H 执行后,执行后,R7=30HR7=30H。例例 MOV R7MOV R7,40H 40H 执行后,执行后,R7=40HR7=40H。注意:注意:寄存器之间无传送;寄存器之间无传送;寄存器间址和寄存器之间无传送;寄存器间址和寄存器之间无传送;立即数不能做目标地址;立即数不能做目标地址;Ri,A DPTR,A A,Ri A,DPTRMOVXMOVCA,A+PCA,A+DPTR2.外部存储器和外部存储器和A累加器之间的传送累加
15、器之间的传送MOVXA 外部数据外部数据存储器存储器程序程序存储器存储器MOVC 利用利用 MOVX 实现片外数据存储器数据传送实现片外数据存储器数据传送 (2000H)(2100H)MOV DPTR,#2000HMOVX A,DPTRMOV DPTR,#2100HMOVX DPTR,A;DPTR=2000H;DPTR=2100H ;A X;(2100H)Xx片外数据存储器不能直接寻址。下列为非法指令:片外数据存储器不能直接寻址。下列为非法指令:MOVX A,2000H MOVX 2100H,2000H 利用利用Ri间址来实现将间址来实现将(2000H)(2100H)(2000H)(2100H
16、)MOV P2,#20H;高位地址高位地址 MOV R0,#00 ;低位地址低位地址 MOVX A,R0;读片外读片外RAM MOV P2,#21H;改变高位地址改变高位地址 MOVX R0,A;写片外写片外RAM 利用利用 MOVC 指令实现查表功能指令实现查表功能注:注:只能从程序存储器读取数据到只能从程序存储器读取数据到A累加器。累加器。只能使用变址间接寻址方式只能使用变址间接寻址方式1)DPTR为基址寄存器为基址寄存器MOVC A,A+DPTR;A(A+DPTR)查表范围为查表范围为 64KB 程序存储器任意空间。程序存储器任意空间。2)PC为基址寄存器为基址寄存器MOVC A,A+P
17、C;A(A+PC)常数表只能在查表指令后常数表只能在查表指令后 256B 范围内。范围内。例例 查表法求查表法求 Y=X2。设设 X(0X15)在片内在片内 RAM 20H单单 元,要求将查表求元,要求将查表求 Y,存入片内存入片内 RAM 21H单元单元1)用)用DPTR作基址寄存器作基址寄存器 ORG 0100HSQU:MOV DPTR,#TAB;确定表首地址确定表首地址 MOV A,20H ;取取 X MOVC A,A+DPTR;查表求查表求 Y=X2 MOV 21H,A ;保存保存Y RET ;子程序结束子程序结束 ;其它程序段;其它程序段 ORG 0200H ;常数表格首地址常数表格
18、首地址TAB:DB 00,01,04,09,225;平方表平方表 指令地址指令地址 源程序源程序 ORG 0100H;程序起始地址程序起始地址 0100HSQU:MOV A,20H;取;取X 0102H ADD A,#3;修正偏移量修正偏移量 0104HMOVC A,A+PC;查表求查表求Y=X2 0105H MOV 21H,A;存结果存结果 0107HRET ;子程序结束子程序结束 0108HTAB:DB 00,01,04;平方表平方表 010BHDB 09,225 思考题:思考题:当当0X255时,如何用查表法编程求时,如何用查表法编程求Y=X22)用)用PC作基址寄存器作基址寄存器 3.
19、3.交换指令交换指令实现片内实现片内RAMRAM区的数据双向传送区的数据双向传送1 1)字节交换指令字节交换指令XCH AXCH A,RnRn ;ARnARn XCH A XCH A,RiRi ;A(RiA(Ri)XCH A XCH A,dir dir;A(dirA(dir)2 2)半字节交换指令半字节交换指令XCHD AXCHD A,RiRi ;A A0 03 3(Ri)(Ri)0 03 3 SWAP A SWAP A ;A A4 47 7A A0 03 3 dirRi RnA 4.堆栈操作指令堆栈操作指令 入栈指令:入栈指令:PUSH dir PUSH dir;SPSP+1SPSP+1,(
20、SP)(dirSP)(dir)出栈指令:出栈指令:POP dir POP dir;(dir)(SP)(dir)(SP),SPSP-1SPSP-1 RiA74743030A74 30 dirRi Rn#dataA dirRi Rn#dataAA,Rn,Ri#data dirADDADDCSUBBANLORLXRL加加进位加进位加借位减借位减与与或或异或异或1.以以A为目的操作数的算术、逻辑运算指令(为目的操作数的算术、逻辑运算指令(24条)条)3.2.2 3.2.2 算术运算和逻辑运算指令算术运算和逻辑运算指令2.以以dir为目的操作数逻辑运算指令(为目的操作数逻辑运算指令(6条)条)A#dat
21、a dir与与 ANL或或 ORL异或异或 XRLdir,#dataA3.加加1、减、减1指令指令RiAdirRnDPTRINCRiAdirRnDEC 4.十进制调整指令十进制调整指令 DA A ;仅对存于仅对存于A中的加法结果进行十进制调整中的加法结果进行十进制调整 若需若需完成十进制完成十进制减法运算,则应变减法运算为减法运算,则应变减法运算为补码的加法运算即可,其减数补码的加法运算即可,其减数X的补码通过的补码通过(99-X)+1再再DA A后得到。后得到。原则:和低原则:和低4位大于位大于9或有半进位,则低或有半进位,则低4位加位加6 和高和高4位大于位大于9或有或有 进位,则高进位,
22、则高4位加位加6例:例:(DATA)-(DATA+1)=(DATA+2)(DATA)-(DATA+1)=(DATA+2)Y-X=Y-X+100 -Y-X=Y-X+100 -有效位为有效位为2 2位十进制,模为位十进制,模为100100 =Y+(99-X)+1 =Y+(99-X)+15.乘、除法指令乘、除法指令MUL AB;ABBADIV AB;AB商在商在A中,余数在中,余数在B中中6.专对专对A的指令的指令CPL ACLR A;0 A;A AMOV A,#99H DA AMOV A,#99H DA ACLR C ADD A,DATACLR C ADD A,DATASUBB A,DATA+1
23、DA ASUBB A,DATA+1 DA AADD A,#1 MOV DATA+2,AADD A,#1 MOV DATA+2,ACYRR ARL ARLC ARRC A移位指令(仅对移位指令(仅对 A)00101101A01001011ACY11001011A000101101A1CY10010110A设设1CYCY 1.1.调用程序和返回类指令调用程序和返回类指令 1 1)长调用)长调用 LCALL addr16 LCALL addr16;addr16PCaddr16PC0 01515 指令功能同指令功能同80X8680X86中的中的CALLCALL,调用范围调用范围64KB64KB全部空间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS 51 系列 单片机 系统 汇编语言 程序设计
限制150内