51单片机汇编语言指令教程汇集.ppt_第1页
51单片机汇编语言指令教程汇集.ppt_第2页
51单片机汇编语言指令教程汇集.ppt_第3页
51单片机汇编语言指令教程汇集.ppt_第4页
51单片机汇编语言指令教程汇集.ppt_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

第二章: MCS-51单片机指令系统,2.1概要,2.2地址方式,2.3数据传输指令,2.4运算逻辑运算和移位指令,2.5控制传输和位操作指令,2.1:MCS-51指令系统概要,MCS-51共111指令,指令长度和执行时间2.1.1指令格式2.1.2指令的3种表现形式2.1.3指令的字节数2.1.4指令的分类、继续、2.1.1指令格式:指令格式:现有指令的结构形式。 由操作码、操作数或操作数地址、操作码和操作数(或操作数地址)构成指令的结构。 例如,MOVA、#0FFHADDA、R0、返回、指令的表现形式是识别指令的标志。 1、二进制表现形式:(以存储器的内容08H为例) 00100100100b操作码OP (加法) 00001000B操作数DATA(08H )的特征: CPU直接识别、执行的形式。 也称为机器代码、汇编语言的目标代码。 缺点:阅读、记忆和调试不容易修改。 2.1.2指令的3种表现形式:2,16进制表现方式:二进制形式的简化。 00100100100b24h00001000b08h可以在实验室等少数环境下,以此形式作为输入程序的辅助手段。 但是,该形式的指令形式必须由对应的监视程序将其翻译成二进制的“机器代码”并存储在程序存储器中来执行。二进制表示的形式16进制表示的形式、3、指令的“助记符”方式(也称为汇编形式):00100100100b24h00001000b08hadda、#08H1是用英语的单词、字母、数字表示指令功能的形式。 是读、写、交流方便的表现。 2、该“装配”形式的指令,必须将其“翻译”为二进制形式的“机器代码”,然后由CPU识别并执行。 3、3种不同的显示方法适用于不同的情况。 本章的内容都是以汇编形式介绍指令系统。 在,二进制表现形式的16进制表现汇编形式中,返回,2.1.3指令的字节数,在MCS-51单片机的指令系统中,指令操作码和操作数不同,指令(存储器中)的长度也不同。 分为单字节、双字节和3字节。 单字节指令(49条):有无操作数、有操作数的2种。 无操作数: INCDPTR10100011BINCA00000100B【特征】:操作数默认为操作码。 包含操作数寄存器名的单字节命令:例如MOVA,R011101000BMOVA,R111101001B【特长】:寄存器名以3位代码的形式位于命令的后3位。 双字节命令(46条):命令的操作码和操作数分别占1字节。 例如,MOVA、#data01110100Bdata显然是8位操作数本身占据1字节。n、n 1、#data、2字节指令在程序存储器中的保存图像、3字节指令(16条):指令中的操作数为2字节。 例如MOVDPTR、#data161001000B、data15-8、data7-0或:指令分别包含1字节的操作数和1字节的操作数地址。 例如,MOVdirect、#data例如MOV20H、#0FFH、#movdprt、#data16、#movdirect、#data、三字节命令存储在存储器中方式的图像、命令的字节数和命令的执行时间、命令的字节数多是命令周期长由表可知,指令的字节数和指令周期不是对等的关系,返回,2.1.4指令的分类,MCS-51单片机的指令按功能分类则为5种: 1,数据传输类指令:单片机内部的数据传输完成。 分成八位和十六位。 除奇偶校验位外,执行命令不会影响PSW。 2、算术运算指令:用于操作数之间的加法、减法、乘法除法。 【特征】:在许多情况下,一个操作数位于累加器a中,其结果也保留在a中,并且运算结果影响PSW (进位标志、奇偶校验、溢出标志等)。 3、逻辑运算和循环移位指令:操作数间的逻辑和、逻辑和、异或等运算。 在很多情况下,一个操作数在a,结果也在a。 移位指令有左移位、右移位、带进位、无进位。 与算术类命令相比,逻辑类命令对PSW的内容几乎没有影响。4、控制转移类命令:条件转移、无条件转移、调用和返回。 【特征】:通过修正程序指针PC的内容,将CPU转到其他地方执行,改变程序的流程。 5、位操作指令:位传输、位置位、位运算和位控制转换等操作。 【特征】:使用比特而不是字节进行操作。 比特控制转换的判断不是检测某个字节,而是检测某个比特并决定是否进行程序转换。 这样的命令对PSW的内容几乎没有影响。 回到。 2.2地址方式将在指令的操作数位置表现操作数并进行搜索的方式定义为“地址方式”。 正确的理解、掌握地址方式是学习、使用指令的关键。 在MCS-51单片机中使用了7种地址方式。 分别为1、寄存器地址5、索引地址2、直接地址指定6、相对地址指定3、立即地址指定7、位地址指定。 4、寄存器间地址、继续、2.2.1寄存器地址、必要的操作数在内部某寄存器Rn中时,将该寄存器名Rn直接写入指令的操作数位置。 例如MOVA、R7; 将寄存器R7的内容发送到存储器a。 MOV20H、R0; 将寄存器R0的数据传送到存储器20H单元INCR1的寄存器R1的内容加上ADDA、R3而得到的a内容和寄存器R3的内容相加,来传送a寄存器地址方式的命令的单字节命令较多。 指令本身没有操作数,包含存储操作数的寄存器的3位代码。 以MOVA、Rn为例,由于使用的是R7寄存器,因此在rrr=111时,指令的机器代码为:0EFH、11101rrr、操作码、寄存器代码、返回、E8HEFH、MOVA、Rn、2.2.2直接寻址,指令本身为操作数的8位或110位命令直接给了操作数的地址。 例如MOVA、30H; 将RAM30H单元的内容传送到累加器30H是RAM上的操作数的地址。 直接寻址的指令长度显然是2字节或3字节。 使用n、n-1、30hz、累加器a、直接地址映像,直接地址应当注意的三个问题:1、命令辅助符号的direct是以十六进制表示的操作数地址。 如果地址正好位于SFR区域,指令也可以用寄存器名称表示。 例如,MOVA、80H可写为MOVA,P0后者以SFR寄存器的名称替换物理地址80H。 显然后者更容易阅读,更容易交流,因此提倡使用SFR的寄存器名称代替直接地址。 例如MOVA、SBUF; 串行数据缓冲器中的数据是AMOVIE,#00H; 初始化中断许可寄存器MOVTH1、#0FEH对计时器1赋予初始值,通过使用SFR的寄存器名称代替直接地址,可以提供程序的可读性,但在汇编时需要将寄存器名称直接转换为地址。 2、直接地址位于工作寄存器区域时,可使用2种地址方式进行访问。 例如MOVA、00H; 为了将RAM上的00H单元的数据发送到累加器AMOVA、R0的工作寄存器R0的内容发送到累加器a,在此地址方式不同,其指令的结构也不同。 前者是11100101(0E5H )、00000000(00H )这2个字节。 后者的机器代码是11101000(0E8H )单字节。在物理结构上,R0和RAM的00H单元正好是相同的单元,因此使用不同的指令执行相同的结果。 同样,存储器A:INCA寄存器地址方式(单字节) INCACC直接地址方式(2字节) INC0E0H直接地址方式(双字节)。 3、在指令系统中,字节地址和比特地址是完全不同的概念。 前者用direct来表示,后者用bit来表示,但在指令中都是以十六进制数来表示的数字。 例如MOVA、20H; 将RAM的20H单元的内容发送到AMOVC、20H的比特地址区域的比特地址为20H比特的内容发送到PSW的Cy。 此外,片内RAM(20H-2FH )的位地址区域结构图、2FH、20H、字节地址、返回、24H、位地址、返回前一次、2.2.3立即地址、命令本身直接包括所需的8位或16位操作数。 此数称为“即时数”(用#表示)。 例如MOVA、#30H; 立即向存储器AMOVDPTR、#2000H发送(8比特)的16比特立即数出DPTR堆栈【注意】: MOVA、#30HMOVA、30H的差异。 立即寻址的命令的长度可以是2字节或3字节。n、n 1、ROM、存储器a、MOVA、#30H命令执行流、ROM、DPTR、MOVDPTR、#2000H命令的存储和执行、返回、2.2.4寄存器间地址、以及在命令中存储操作数地址的寄存器Ri。 MOVA、 Ri (I=0,1 ) CPU首先从命令中的寄存器名ri中找到操作数地址,然后从该地址中找到操作数x。 例如MOVR0、#30H; 立即计算R0寄存器MOVA,R0; 从RAM的h单元取得存储器a【注意】MOVA、R0和MOVA、R0命令的不同。 另外,使用30H、R0、00h、累加器a、1、2、3、寄存器间地址指令时应注意的三个问题是:1、中间地址寄存器Ri只能使用R0、R1寄存器(i=0、1 )。 2、地址方式不仅适用于片上RAM,也适用于片上RAM。 片上RAM使用Ri寄存器,地址范围为00HFFH。 片外RAM可以采用Ri,也可以采用DPTR作为地址寄存器。 两者的不同在于后者的地址范围为0000HFFFFH,两者都能够实现RAM和ROM。 3、地址方式的指令无法访问SFR的单元。 在MOVR1、#80HMOVA、r1(80h是SFR的物理地址)、MCS-51图片内、图片外数据存储器的图像、特殊功能寄存器SFR、通用数据存储器、80H7FH,00H、 FFH、片内数据存储器片外数据存储器256B字节64KB字节、片外数据存储器64KB、0000H、FFFFH、注意: 1、存取片内RAM20H存储单元; 在MOVA、20H2、访问片外RAM的存储单元的MOVR0、#20HMOVXA、R03中,即使片内和片外的RAM单元的00H-FFH地址重叠,命令也不会使地址混乱。 然后,2.2.5索引地址指定、DPTR或PC的内容被用作基地地址,并且被加到累加器a的内容之和作为操作数地址。 例如MOVXA、A PC; PC的内容和a的内容以操作数地址相加,AMOVXA、A DPTR; 将DPTR的内容和a的内容以操作数地址相加,将该操作数传递给a使用索引命令时,为了获得操作数地址,预先分别代入a、DPTR。 索引指令仅适用于ROM存储器的访问,例如查找表。 【例】:已知ROM的0302H单元中有数x,因此将其发送到存储器a,尝试程序。 MOVDPTR、#0300H; 立即DPTRMOVA、#02H; 立即计算存储器AMOVCA,A DPTR; 从ROM的00302单元格到a、索引修饰图像、02H、0300H、ALU、0302H、存储器a、DPTR、0300H 02H0302H、MOVCA、apdprt、返回、2.2.6相对地址指定、转移命令中使用的地址MCS-51单片机的指令系统包括两种类型的传输指令:相对传输(2字节或3字节)绝对传输(3字节)。 在绝对转移命令中,命令直接提供转移目的地地址(2字节地址),并且当执行命令时直接向PC发送目标地址,从而控制程序转移的相对转移命令将PC值加上命令中的8位偏移,以形成用于传送命令的目的地地址。 因为SJMPrel是指令中8比特偏移rel为有符号比特的补数,所以控制程序的转移范围是127-128。 54H、2002H、ALU、2056H、累加器a、PC、2002H 54H2056H、操作码、偏移量,例如SJMP54H; (80H、54H )、2000H、2002H、(LOOP1)对于应该注意相对地址的使用的问题,由于相对地址比绝对地址具有更好的“浮动性”,所以是程序员普遍使用的地址方式。 使用时,注意3点: 1,CPU进行地址计算时,PC取的值为执行本指令后的地址值。 在上面的例子中,命令自身的开头地址是2000H,并且在执行命令之后是2002H (下一命令的开头地址)。 如果使用3字节的相对传输命令,则PC=PC 3。 返回上一页,将2、偏移计算: rel=目标地址-源地址-2(2字节指令)或: rel=目标地址-源地址-3(3字节指令)的结果作为补码来记述。 为了减少计算偏移量的计算,汇编器可以使用“符号地址”而不是偏移量。 例如,SJMPloop1汇编器在翻译时自动计算,并将结果置换为符号地址。 3、在转送目的地地址的范围超过相对地址的范围(例如-127 128 )的情况下,采用别的方法,否则在编译时会提示错误。返回2.2.7位地址、位地址指定指令(位操作指令)中使用的位地址。 通常,系统中的所有数据都以字节(8位)存储处理。 单片机在控制、检测应用中,系统的输入输出数据多属于开关量信号。 这些开关量信号以bit-“比特”的形式进行各种运算处理存储。 MCS-51单片机的控制、检测系统:驱动器,电动机,外围设备1,外围设备2,状态信号,状态信号,控制信号,在MCS-51单片机的硬件设计上,充分考虑该“布尔”变量的处理这样,布尔变量与字节数据同样地被存储,能够进行地址指定。 除了位地址区域外,RAM的很多SFR可以用位地址来地址,换言之,SFR除了独自的字节地址之外,在寄存器内的各位中还有位地址。 【例】: SETB20H; 与将位地址为20H的位置设为SETB90H的P1端口的d0位置用字节地址直接地址同样地,为了提高程序的可读性,可以将SFR的位地址用符号地址置换。 类似于第二示例,可以完全使用命令格式MOVP1.0的P0端口的d0位置: MOVC,ACC.7; 向PSW的cy发送累加器的d7位的指令在汇编器翻译时必须将符号地址转换成真实的位地址。 返回,2.3数据传输命令,2.3.0传输命令的特征2.3.1内部数据传输系统命令2.3.2外部数据传输系统命令2.3.3堆栈操作命令2.3.4数据交换命令,继续,数据传输是程序中最多

温馨提示

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

评论

0/150

提交评论