三单片机汇编程序设计8.ppt
《三单片机汇编程序设计8.ppt》由会员分享,可在线阅读,更多相关《三单片机汇编程序设计8.ppt(73页珍藏版)》请在咨信网上搜索。
1、3.1 MCS-51系列单片机汇编指令格式及标识系列单片机汇编指令格式及标识 指令是使计算机完成基本操作的命令。一种计算机能够执行的全部指令的集合,称为这种计算机的指令系统。单片机的指令系统与微型计算机的指令系统不同,MCS-51系列单片机指令系统共有111条指令,42种指令助记符,其中有49条单字节指令,45条双字节指令和17条三字节指令;有64条为单机器周期指令,45条为双机器周期指令,只有乘、除法两条指令为四机器周期指令。在存储空间和运算速度上,效率都比较高。MCS-51系列单片机指令系统功能强、指令短、执行快。从功能上可分成五大类:数据传送指令、算术运算指令、逻辑操作指令、控制转移指令
2、和位操作指令。3.1.1 指令格式指令格式标号:标号:操作码助记符操作码助记符 目的操作数目的操作数,源操作数,源操作数 ;注释;注释(1)操作码助记符表明指令的功能,不同的指令有不同的指令助记符,它一般用说明其功能的英文单词的缩写形式表示。(2)操作数用于给指令的操作提供数据、数据的地址或指令的地址,操作数往往用相应的寻址方式指明。MCS-51单片机指令系统的指令按操作数的多少可分为无操作数、单操作数、双操作数和三操作数四种情况。(3)标号是该指令的符号地址,后面须带冒号。它主要为转移指令提供转移的目的地址。(4)注释是对该指令的解释,前面须带分号。它们是编程者根据需要加上去的,用于对指令进
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:表示可位寻址
4、的直接位地址。(8)(X):表示X单元中的内容。(9)(X):表示以X单元的内容为地址的存储器单元内容,即(X)作地址,该地址单元的内容用(X)表示。(10)/和符号:“/”表示对该位操作数取反,但不影响该位的原值。“”表示操作流程,将箭尾一方的内容送入箭头所指一方的单元中去。3.2 MCS-51系列单片机寻址方式系列单片机寻址方式 MCS-51单片机的寻址方式按操作数的类型,可分为数的寻址和指令寻址,数的寻址有:常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址,3.2.1 常数寻址(立即寻
5、址)常数寻址(立即寻址)操作数是常数,使用时直接出现在指令中,紧跟在操作码的后面,作为指令的一部分。与操作码一起存放在程序存储器中,可以立即得到并执行,不需要经过别的途径去寻找。常数又称为立即数,故又称为立即寻址。在汇编指令中,立即数前面以“#”符号作前缀。在程序中通常用于给寄存器或存储器单元赋初值,例如:MOV A,#20H 其功能是把立即数20H送给累加器A,其中源操作数20H就是立即数。指令执行后累加器A中的内容为20H。3.2.2 寄存器数寻址(寄存器寻址)寄存器数寻址(寄存器寻址)操作数在寄存器中,使用时在指令中直接提供寄存器的名称,这种寻址方式称为寄存器寻址。在MCS-51系统中,
6、这种寻址方式针对的寄存器只能是R0R7 8个通用寄存器和部分特殊功能寄存器(如累加器A、寄存器B、数据指针DPTR等)中的数据,对于其它的特殊功能寄存器中的内容的寻址方式不属于它。在汇编指令中,寄存器寻址在指令中直接提供寄存器的名称,如R0、R1、A、DPTR等。例如:MOV A,R0其功能是把R0寄存器中的数送给累加器A,在指令中,源操作数R0为寄存器寻址,传送的对象为R0中的数据。如指令执行前R0中的内容为20H,则指令执行后累加器A中的内容为20H。3.2.3 存储器数寻址存储器数寻址 存储器数寻址针对的数据是存放在存储器单元中,对于存储器单元的内容通过提供存储器单元地址使用。根据存储器
7、单元地址的提供方式,存储器数的寻址方式有:直接寻址、寄存器间接寻址、变址寻址。一直接寻址一直接寻址 直接寻址是指数据在存储器单元中,在指令中直接提供存储器单元的地址。在MCS-51系统中,这种寻址方式针对的是片内数据存储器和特殊功能寄存器。在汇编指令中,指令中直接以地址数的形式提供存储器单元的地址。例如:MOV A,20H 其功能是把片内数据存储器20H单元的内容送给累加器A。如指令执行前片内数据存储器20H单元的内容为30H,则指令执行后累加器A的内容为30H。指令中20H是地址数,它是片内数据存储单元的地址。在MCS-51中,数据前面不加“#”是存储单元地址而不是常数,常数前面要加符号“#
8、”。对于特殊功能寄存器,在指令中使用时往往通过特殊功能寄存器的名称使用,而特殊功能寄存器名称实际上是特殊功能寄存器单元的符号地址,因此它们是直接寻址。例如:MOV A,P0 其功能是把P0口的内容送给累加器A。P0是特殊功能寄存器P0口的符号地址,该指令在翻译成机器码时,P0就转换成直接地址80H。二寄存器间接寻址二寄存器间接寻址 寄存器间接寻址是指数据存放在存储单元中,而存储单元地址存放在寄存器中,在指令中通过提供存放存储单元地址的寄存器来使用对应的存储单元。形式为:寄存器名。例如:MOV A,R1 该指令的功能是将以工作寄存器R1中的内容为地址的片内RAM单元的数据传送到累加器A中去。指令
9、的源操作数是寄存器间接寻址。若R1中的内容为80H,片内RAM地址为80H的单元中的内容为20H,则执行该指令后,累加器A的内容为20H。寄存器间接寻址示意图如图所示。80H20H20HA80HR1 在MCS-51单片机中,寄存器间接寻址用到的寄存器只能是通用寄存器R0、R1和数据指针寄存器DPTR,它能访问的数据是片内数据存储器和片外数据存储器。其中,片内数据存储器只能用R0和R1作指针间接访问;片外数据存储器,低端的256字节单元,既可以用两位十六进制地址以R0或R1作指针间接访问,也可用四位十六进制地址以DPTR作指针间接访问,而高端的字节单元则只能以DPTR作指针间接访问。对于片内RA
10、M和片外RAM的低端256字节都可以用R0和R1作指针访问,它们之间用指令来区别。片内RAM访问用MOV指令,片外RAM访问用MOVX指令。三变址寻址三变址寻址 变址寻址是指操作数的地址由基址寄存器的地址加上变址寄存器的地址得到。在MCS-51系统中,它是以数据指针寄存器DPTR或程序计数器PC为基址,累加器A为变址,两者相加得存储单元的地址,所访问的存储器为程序存储器。例如:MOVC A,A+DPTR其功能是将数据指针寄存器DPTR的内容和累加器A中的内容相加作为程序存储器的地址,从对应的单元中取出内容送累加器A中。指令中,源操作数的寻址方式为变址寻址,设指令执行前数据指针寄存器DPTR的值
11、为2000H,累加器A的值为05H,程序存储器2005H单元的内容为30H,则指令执行后,累加器A中的内容为30H。示意图如图所示。2000H30H30HDPTRA2005H05HA+3.2.4 位寻址位寻址位寻址是指操作数是二进制位的寻址方式。在MCS-51单片机中有一个独立的位处理器,有多条位处理指令,能够进行各种位运算。在MCS-51系统中,位处理的操作对象是各种可位寻址位。对于它们的访问是通过提供相应的位地址来处理。在MCS-51系统中,位地址的表示可以用以下几种方式:1直接位地址(00H0FFH)。例如:20H2字节地址带位号。例如:20H.3表示20H单元的3位。3特殊功能寄存器名
12、带位号。例如:P0.1表示P0口的1位。4位符号地址。例如:TR0是定时/计数器T0的启动位。3.2.5 指令寻址指令寻址一绝对寻址一绝对寻址绝对寻址是在指令的操作数中直接提供目的位置的地址或地址的一部份。在MCS-51系统中,长转移和长调用提供目的位置的16位地址,绝对转移和绝对调用提供目的位置的16位地址的低11位,它们都为绝对寻址。二相对寻址二相对寻址 相对寻址是以当前程序计数器PC值加上指令中给出的偏移量rel得到目的位置的地址。在MCS-51系统中,相对转移指令的操作数属于相对寻址。在使用相对寻址时要注意以下两点:(1)当前PC值是指转移指令执行时的PC值,它等于转移指令的地址加上转
13、移指令的字节数。实际上是转移指令的下一条指令的地址。例如:若转移指令的地址为2010H,转移指令的长度为2字节,则转移指令执行时的PC值为2012H。(2)偏移量rel是8位有符号数,以补码表示,它的取值范围为-128+127。当为负值时,向前转移,当为正数时向后转移。相对寻址的目的地址为:目的地址=当前PC+rel=转移指令的地址+转移指令的字节数+rel3.3 MCS-51系列单片机指令系统系列单片机指令系统3.3.1 数据传送指令数据传送指令数据传送指令有29条,是指令系统中数量最多、使用也最频繁的一类指令。这类指令可分为三组:普通传送指令、数据交换指令、堆栈操作指令。一普通传送指令一普
14、通传送指令 普通传送指令以助记符MOV为基础。分成片内数据存储器传送指令、片外数据存储器传送指令和程序存储器传送指令。1片内数据存储器传送指令片内数据存储器传送指令MOV指令格式:MOV 目的操作数,源操作数其中:源操作数可以为A、Rn、Ri、direct、#data,目的操作数可以为A、Rn、Ri、direct,组合起来总共16条,按目的操作数的寻址方式划分为五组:(1)以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,direc
15、t;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;(direct)#data(4)以间接地址Ri为目的操作数MOV Ri,A;(Ri)AMOV Ri,direct;(Ri)(direct)MOV Ri,#data;(Ri)#data(5)以DPTR为目的操作数MOV DPTR,#data16 ;DP
16、TR#data16注意,源操作数和目的操作数中的Rn和Ri不能相互配对。如不允许有“MOV Rn,Rn”,“MOV Ri,Rn”这样的指令,在MOV指令中,不允许在一条指令中同时出现工作寄存器,无论它是寄存器寻址还是寄存器间接寻址。2片外数据存储器传送指令片外数据存储器传送指令MOVX 在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间接寻
17、址,可以对整个64K片外数据存储器访问。后两条指令通过Ri间接寻址,只能对片外数据存储器的低端的256字节访问,访问时将低8位地址放于Ri中。3程序存储器传送指令程序存储器传送指令MOVC 程序存储器传送指令只有两条,一条用DPTR基址变址寻址。一条用PC基址变址寻址。MOVC A,A+DPTR;A (A+DPTR)MOVC A,A+PC;A (A+PC)这两条指令通常用于访问表格数据,因此以称为查表指令。例如:查表指令MOVC A,A+PC PC所在的地址为2000H,表格的起始单元地址为2035H,表格的第4个元素(位移量为03H)的内容为45H,则查表指令的处理过程如下:MOV A,#0
18、3H ;表格元素相对于表首的位移量送累加器A ADD A,34H ;当前程序计数器PC相对于表首的差值加到累加器A中 MOVC A,A+PC ;查表,查得第4个元素内容45H送累加器A 注意:查表指令的长度为1个字节,当前程序计数器PC的值应为查表指令的地址加1。【例【例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 DPT
19、R,#1000HMOV X A,DPTRMOV 20H,A(4)将ROM 2000H单元的内容送片内RAM的30H单元中程序为:MOV A,#0MOV DPTR,#1000HMOVC A,A+DPTRMOV 30H,A二数据交换指令二数据交换指令 普通传送指令实现将源操作数的数据传送到目的操作数,指令执行后源操作数不变,数据传送是单向的。数据交换指令数据作双向传送,传送后,前一个操作数原来的内容传送到后一个操作数中,后一个操作数原来的内容传送到前一个操作数中。数据交换指令要求第一个操作数须为累加器A,共有5条。XCH A,Rn;A RnXCH A,direct;A(direct)XCH A,R
20、i;A(Ri)XCHD A,Ri;A03(Ri)03SWAP A;A03A47【例【例3-2】若】若R0的内容为30H,片内RAM 30H单元的内容为23H,累加器A的内容为45H,则执行XCH A,R0指令后片内RAM 30H单元的内容为45H,累加器A中的内容为23H。若执行SWAP A指令,则累加器A的内容为54H。三堆栈操作指令三堆栈操作指令 堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据的进栈和出栈由指针SP统一管理。在MCS-51系统中,堆栈操作指令有两条:PUSH direct;SP(SP+1),(SP)(direct)POP direct;(direct
21、)(SP),(SP)(SP-1)其中PUSH指令入栈,POP指令出栈。操作时以字节为单位。入栈时SP指针先加1,再入栈。出栈时内容先出栈,SP指针再减1。用堆栈保存数据时,先入栈的内容后出栈;后入栈的内容先出栈。【例3-3】若入栈保存时入栈的顺序为:PUSH APUSH B则出栈的顺序为:POP BPOP A3.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
22、 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其中,ADD和ADDC指令在执行时要影响CY、AC、OV和P标志位。而INC指令除了INC A要影响P标志位外,对其它标志位都没有影响。在MCS-51单片机中,常用ADD和ADDC配合使用实现多字节加法运算。【例【例3-4】试把存
23、放在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二减法指令二减法指令1带借位减法指令带借位减法指令SUBBSUBB A,Rn;A A-Rn-CSUBB A,direct;A A-(direct)-CSUBB A,Ri;A A-(Ri)-CSUBB A,#data;A A-#data C2减减1指令指令DECDEC A;A A-1DEC Rn;Rn Rn-1DEC
24、 direct;direct(direct)-1DEC Ri;(Ri)(Ri)-1 在MCS-51单片机中,只提供了一种带借位的减法指令,没有提供一般的减法指令,一般的减法操作可以通过先对CY标志清零,然后再执行带借位的减法来实现。其中,SUBB指令在执行时要影响CY、AC、OV和P标志位。而DEC指令除了DEC A要影响P标志位外,对其它标志位都没有影响。【例【例3-5】求R3 R2-R1。程序为:MOV A,R2CLR CSUBB A,R1MOV R3,A3乘法指令乘法指令MUL 在MCS-51单片机中,乘法指令只有一条:MUL AB 该指令执行时将对存放于累加器A中的无符号被乘数和放于B
25、寄存器中的无符号乘数相乘,积的高字节存于B寄存器中,低字节存于累加器A中。指令执行后将影响CY和OV标志,CY复位,对于OV:当积大于255时(即B中不为0),OV为1;否则,OV为0。4除法指令除法指令DIV 在MCS-51单片机中,除法指令也只有一条:DIV AB 该指令执行时将用存放在累加器A中的无符号被除数与存放在B寄存器中的无符号除数相除,除得的结果,商的存于累加器A中,余数存于B寄存器中。指令执行后将影响CY和OV标志,一般情况CY和OV都清0,只有当B寄存器中的除数为0时,CY和OV才被置1。5十进制调整指令十进制调整指令 在MCS-51单片机中,十进制调整指令只有一条:DA A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 汇编程序 设计
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。