最新单片机汇编程序设计精品课件.ppt
《最新单片机汇编程序设计精品课件.ppt》由会员分享,可在线阅读,更多相关《最新单片机汇编程序设计精品课件.ppt(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.1.2 指令中用到的标识符指令中用到的标识符为便于后面的学习,在这里先对指令中用到的一些符号的约定意义作以说明:(1)Ri和Rn:表示当前工作寄存器区中的工作寄存器,i取0或1,表示R0或R1。n取07,表示R0R7。(2)#data:表示包含在指令中的8位立即数。(3)#data16:表示包含在指令中的16位立即数。 (4)rel:以补码形式表示的8位相对偏移量,范围为-128127,主要用在相对寻址的指令中。(5)addr16和addr11:分别表示16位直接地址和11位直接地址。(6)direct:表示直接寻址的地址。(7)bit:
2、表示可位寻址的直接位地址。第第3 3章章 单片机汇编程序设计单片机汇编程序设计第第3 3章章 单片机汇编程序设计单片机汇编程序设计第第3 3章章 单片机汇编程序设计单片机汇编程序设计第第3 3章章 单片机汇编程序设计单片机汇编程序设计第第3 3章章 单片机汇编程序设计单片机汇编程序设计第第3 3章章 单片机汇编程序设计单片机汇编程序设计第第3 3章章 单片机汇编程序设计单片机汇编程序设计例如:MOVC A,A+DPTR其功能是将数据指针寄存器DPTR的内容和累加器A中的内容相加作为程序存储器的地址,从对应的单元中取出内容送累加器A中。指令中,源操作数的寻址方式为变址寻址,设指令执行前数据指针寄
3、存器DPTR的值为2000H,累加器A的值为05H,程序存储器2005H单元的内容为30H,则指令执行后,累加器A中的内容为30H。示意图如图所示。2000H30H30HDPTRA2005H05HA+第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.2.4 位寻址位寻址位寻址是指操作数是二进制位的寻址方式。在MCS-51单片机中有一个独立的位处理器,有多条位处理指令,能够进行各种位运算。在MCS-51系统中,位处理的操作对象是各种可位寻址位。对于它们的访问是通过提供相应的位地址来处理。在MCS-51系统中,位地址的表示可以用以下几种方式:1直接位地址(00H0FFH)。例如:20H2字节
4、地址带位号。例如:20H.3表示20H单元的3位。3特殊功能寄存器名带位号。例如:P0.1表示P0口的1位。4位符号地址。例如:TR0是定时/计数器T0的启动位。3.2.5 指令寻址指令寻址一绝对寻址一绝对寻址绝对寻址是在指令的操作数中直接提供目的位置的地址或地址的一部份。在MCS-51系统中,长转移和长调用提供目的位置的16位地址,绝对转移和绝对调用提供目的位置的16位地址的低11位,它们都为绝对寻址。第第3 3章章 单片机汇编程序设计单片机汇编程序设计二相对寻址二相对寻址相对寻址是以当前程序计数器PC值加上指令中给出的偏移量rel得到目的位置的地址。在MCS-51系统中,相对转移指令的操作
5、数属于相对寻址。在使用相对寻址时要注意以下两点:(1)当前PC值是指转移指令执行时的PC值,它等于转移指令的地址加上转移指令的字节数。实际上是转移指令的下一条指令的地址。例如:若转移指令的地址为2010H,转移指令的长度为2字节,则转移指令执行时的PC值为2012H。(2)偏移量rel是8位有符号数,以补码表示,它的取值范围为-128+127。当为负值时,向前转移,当为正数时向后转移。相对寻址的目的地址为:目的地址=当前PC+rel=转移指令的地址+转移指令的字节数+rel第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.3 MCS-51系列单片机指令系统系列单片机指令系统3.3.1 数
6、据传送指令数据传送指令数据传送指令有29条,是指令系统中数量最多、使用也最频繁的一类指令。这类指令可分为三组:普通传送指令、数据交换指令、堆栈操作指令。一普通传送指令一普通传送指令 普通传送指令以助记符MOV为基础。分成片内数据存储器传送指令、片外数据存储器传送指令和程序存储器传送指令。1片内数据存储器传送指令片内数据存储器传送指令MOV指令格式:MOV 目的操作数,源操作数其中:源操作数可以为A、Rn、Ri、direct、#data,目的操作数可以为A、Rn、Ri、direct,组合起来总共16条,按目的操作数的寻址方式划分为五组:第第3 3章章 单片机汇编程序设计单片机汇编程序设计(1)以
7、A为目的操作数MOV A,Rn;A RnMOV A,direct ;A(direct)MOV A,Ri ;A(Ri)MOV A,#data ;A #data(2)以Rn为目的操作数MOV Rn,A;Rn AMOV Rn,direct;Rn (direct)MOV Rn,#data;Rn #data(3)以直接地址direct为目的操作数MOV direct,A ;(direct) AMOV direct,Rn;(direct) RnMOV direct,direct;(direct) (direct)MOV direct,Ri;(direct) (Ri)MOV direct,#data;(di
8、rect) #data(4)以间接地址Ri为目的操作数MOV Ri,A ;(Ri) AMOV Ri,direct;(Ri) (direct)MOV Ri,#data;(Ri) #data(5)以DPTR为目的操作数MOV DPTR,#data16 ;DPTR #data16第第3 3章章 单片机汇编程序设计单片机汇编程序设计注意,源操作数和目的操作数中的Rn和Ri不能相互配对。如不允许有“MOV Rn,Rn”,“MOV Ri,Rn”这样的指令,在MOV指令中,不允许在一条指令中同时出现工作寄存器,无论它是寄存器寻址还是寄存器间接寻址。 2片外数据存储器传送指令片外数据存储器传送指令MOVX 在
9、MCS-51系统中只能通过累加器A与片外数据存储器进行数据传送,访问时,只能通过Ri和DPTR以间接寻址方式进行。MOVX指令共有四条:MOVX A,DPTR;A (DPTR)MOVX DPTR,A;(DPTR) AMOVX A,Ri;A (Ri)MOVX Ri,A;(Ri) A 其中前两条指令通过DPTR间接寻址,可以对整个64K片外数据存储器访问。后两条指令通过Ri间接寻址,只能对片外数据存储器的低端的256字节访问,访问时将低8位地址放于Ri中。第第3 3章章 单片机汇编程序设计单片机汇编程序设计3程序存储器传送指令程序存储器传送指令MOVC 程序存储器传送指令只有两条,一条用DPTR基
10、址变址寻址。一条用PC基址变址寻址。MOVC A,A+DPTR ;A (A+DPTR)MOVC A,A+PC;A (A+PC)这两条指令通常用于访问表格数据,因此以称为查表指令。 例如:查表指令MOVC A,A+PC所在的地址为2000H,表格的起始单元地址为2035H,表格的第4个元素(位移量为03H)的内容为45H,则查表指令的处理过程如下: MOV A,#03H ;表格元素相对于表首的位移量送累加器A ADD A,#34H ;当前程序计数器PC相对于表首的差值加到累加器A中 MOVC A,A+PC ;查表,查得第4个元素内容45H送累加器A 注意:查表指令的长度为1个字节,当前程序计数器
11、PC的值应为查表指令的地址加1。第第3 3章章 单片机汇编程序设计单片机汇编程序设计【例【例3-1】写出完成下列功能的程序段。】写出完成下列功能的程序段。(1)将R0的内容送R6中程序为:MOV A,R0MOV R6,A(2)将片内RAM 30H单元的内容送片外60H单元中程序为:MOV A,30HMOV R0,#60HMOVX R0,A(3)将片处RAM 1000H单元的内容送片内20H单元中程序为:MOV DPTR,#1000HMOV A,DPTRMOV 20H,A(4)将ROM 2000H单元的内容送片内RAM的30H单元中程序为:MOV A,#0MOV DPTR,#2000HMOVC
12、A,A+DPTRMOV 30H,A第第3 3章章 单片机汇编程序设计单片机汇编程序设计二数据交换指令二数据交换指令 普通传送指令实现将源操作数的数据传送到目的操作数,指令执行后源操作数不变,数据传送是单向的。数据交换指令数据作双向传送,传送后,前一个操作数原来的内容传送到后一个操作数中,后一个操作数原来的内容传送到前一个操作数中。 数据交换指令要求第一个操作数须为累加器A,共有5条。XCH A,Rn;A RnXCH A ,direct ;A(direct)XCH A,Ri;A(Ri)XCHD A,Ri ;A03(Ri)03SWAP A;A03A47【例【例3-2】若】若R0的内容为30H,片内
13、RAM 30H单元的内容为23H,累加器A的内容为45H,则执行XCH A,R0指令后片内RAM 30H单元的内容为45H,累加器A中的内容为23H。若执行SWAP A指令,则累加器A的内容为54H。第第3 3章章 单片机汇编程序设计单片机汇编程序设计三堆栈操作指令三堆栈操作指令 堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据的进栈和出栈由指针SP统一管理。在MCS-51系统中,堆栈操作指令有两条:PUSH direct;SP(SP+1),(SP)(direct)POP direct;(direct)(SP),(SP) (SP-1) 其中PUSH指令入栈,POP指令出栈
14、。操作时以字节为单位。入栈时SP指针先加1,再入栈。出栈时内容先出栈,SP指针再减1。用堆栈保存数据时,先入栈的内容后出栈;后入栈的内容先出栈。 【例3-3】若入栈保存时入栈的顺序为:PUSH APUSH B则出栈的顺序为:POP BPOP A第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.3.2 算术运算指令算术运算指令一加法指令一加法指令1一般的加法指令一般的加法指令ADDADD A,Rn ;A A + RnADD A,direct;A A +(direct)ADD A,Ri;A A +(Ri)ADD A,#data;A A + #data2带进位加指令带进位加指令ADDCADDC
15、 A,Rn;A A + Rn + CADDC A,direct;A A +(direct)+ CADDC A,Ri;A A +(Ri)+ CADDC A,#data;A A + #data + C3加加1指令指令INC A;A A + 1INC Rn;Rn Rn + 1INC direct;(direct) (direct)+ 1INC Ri;(Ri)(Ri)+ 1INC DPTR;DPTR DPTR + 1第第3 3章章 单片机汇编程序设计单片机汇编程序设计其中,ADD和ADDC指令在执行时要影响CY、AC、OV和P标志位。而INC指令除了INC A要影响P标志位外,对其它标志位都没有影响。
16、在MCS-51单片机中,常用ADD和ADDC配合使用实现多字节加法运算。【例【例3-4】试把存放在R1R2和R3R4中的两个16位数相加,结果存于R5R6中。 处理时,R2和R4用一般的加法指令ADD,结果放于R6中,R1和R3用带进位的加法指令ADDC,结果放于R5中,程序如下:MOV A,R2ADD A,R4MOV R6,AMOV A,R1ADDC A,R3MOV R5,A第第3 3章章 单片机汇编程序设计单片机汇编程序设计二减法指令二减法指令1带借位减法指令带借位减法指令SUBBSUBB A,Rn;A A - Rn - CSUBB A,direct;A A -(direct)- CSUB
17、B A,Ri;A A -(Ri)- CSUBB A,#data;A A - #data C2减减1指令指令DECDEC A;A A - 1DEC Rn;Rn Rn - 1DEC direct;direct (direct)- 1DEC Ri;(Ri)(Ri)- 1 在MCS-51单片机中,只提供了一种带借位的减法指令,没有提供一般的减法指令,一般的减法操作可以通过先对CY标志清零,然后再执行带借位的减法来实现。其中,SUBB指令在执行时要影响CY、AC、OV和P标志位。而DEC指令除了DEC A要影响P标志位外,对其它标志位都没有影响。 第第3 3章章 单片机汇编程序设计单片机汇编程序设计【例
18、【例3-5】求R3 R2 - R1。程序为:MOV A,R2CLR CSUBB A,R1MOV R3,A3乘法指令乘法指令MUL 在MCS-51单片机中,乘法指令只有一条:MUL AB 该指令执行时将对存放于累加器A中的无符号被乘数和放于B寄存器中的无符号乘数相乘,积的高字节存于B寄存器中,低字节存于累加器A中。 指令执行后将影响CY和OV标志,CY复位,对于OV:当积大于255时(即B中不为0),OV为1;否则,OV为0。第第3 3章章 单片机汇编程序设计单片机汇编程序设计4除法指令除法指令DIV 在MCS-51单片机中,除法指令也只有一条:DIV AB 该指令执行时将用存放在累加器A中的无
19、符号被除数与存放在B寄存器中的无符号除数相除,除得的结果,商的存于累加器A中,余数存于B寄存器中。 指令执行后将影响CY和OV标志,一般情况CY和OV都清0,只有当B寄存器中的除数为0时,CY和OV才被置1。5十进制调整指令十进制调整指令 在MCS-51单片机中,十进制调整指令只有一条:DA A 它只能用在ADD或ADDC指令后面,用来对两个二位的压缩的BCD码数通过用ADD或ADDC指令相加后存于累加器A中的结果进行调整,使得它得到正确的十进制结果。通过该指令可实现两位十进制BCD码数的加法运算。第第3 3章章 单片机汇编程序设计单片机汇编程序设计它的调整过程为:(1)若累加器A的低四位为十
20、六进制的AF或辅助进位标志AC为1,则累加器A中的内容作加06H调整。(2)若累加器A的高四位为十六进制的AF或进位标志CY为1,则累加器A中的内容作加60H调整。【例【例3-6】在R3中有十进制数67,在R2中有十进制数85,用十进制运算,运算的结果放于R5中。程序为:MOV A,R3ADD A,R2DA AMOV R5,A 程序中DA指令对ADD指令运算出来的放于累加器A中的结果进行调整,调整后,累加器A中的内容为52H,CY为1,则结果为152,最后放于R5中的内容为52H(十进制数52)。第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.3.3 逻辑操作指令逻辑操作指令一逻辑与指
21、令一逻辑与指令ANLANL A,Rn A A RnANL A,direct A A (direct)ANL A,Ri A A (Ri)ANL A,#data A A dataANL direct,A (direct) (direct) AANL direct,#data (direct) (direct) data二逻辑或指令二逻辑或指令ORLORL A,Rn A A RnORL A,direct A A (direct)ORL A,Ri A A (Ri)ORL A,#data A A dataORL direct,A (direct) (direct) AORL direct,#data (
22、direct) (direct) data第第3 3章章 单片机汇编程序设计单片机汇编程序设计三逻辑异或指令三逻辑异或指令XRLXRL A,Rn A A RnXRL A,direct A A (direct)XRL A,Ri A A (Ri)XRL A,#data A A dataXRL direct,A (direct) (direct) AXRL direct,#data (direct) (direct) data 在使用中,逻辑与用于实现对指定位清0,其余位不变;逻辑或用于实现对指定位置1,其余位不变;逻辑异或用于实现指定位取反,其余位不变。【例【例3-7】写出完成下列功能的指令段。1
23、对累加器A中的1、3、5位清0,其余位不变ANL A,#11010101B2对累加器A中的2、4、6位置1,其余位不变ORL A,#01010100B3对累加器A中的0、1位取反,其余位不变XRL A,#00000011B第第3 3章章 单片机汇编程序设计单片机汇编程序设计四清零和求反指令四清零和求反指令1清零指令:CLR A A 02求反指令:CPL A A 在MCS-51系统中,只能对累加器A中的内容进行清零和求反,如要对其它的寄存器或存储单元进行清零和求反,则须放在累加器A进行,运算后再放回原位置。【例【例3-8】写出对R0寄存器内容求反的程序段。程序为:MOV A,R0CPL AMOV
24、 R0,A五循环移位指令五循环移位指令 MCS-51系统有四条对累加器A的循环移位指令,前两条只在累加器A中进行循环移位,后两条还要带进位标志CY进行循环移位。每一次移一位。分别如下:1累加器A循环左移RL A2累加器A循环右移RR A第第3 3章章 单片机汇编程序设计单片机汇编程序设计3带进位的循环左移RLC A4带进位的循环右移RRC A【例【例3-9】若累加器A中的内容为10001011B,CY=0,则执行RLC A指令后累加器A中的内容为00010110,CY=1。第第3 3章章 单片机汇编程序设计单片机汇编程序设计3.3.4 控制转移指令控制转移指令共有17条,包括无条件转移指令、条
25、件转移指令、子程序调用及返回指令。一无条件转移指令一无条件转移指令 无条件转移指令是指当执行该指令后,程序将无条件地转移到指令指定的地方去。无条件转移指令包括长转移指令、绝对转移指令、相对转移指令和间接转移指令。1长转移指令长转移指令LJMP 指令格式:LJMP addr16;PC addr16 指令后面带目的位置的16位地址,执行时直接将该16位地址送给程序指针PC,程序无条件地转到16位目标地址指明的位置去。指令中提供的是16位目标地址,所以可以转移到64KB程序存储器的任意位置,故得名为“长转移”。该指令不影响标志位,使用方便。缺点是:执行时间长,字节数多。第第3 3章章 单片机汇编程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 单片机 汇编程序 设计 精品 课件
限制150内