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

下载本文档

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

文档简介

第二章: MCS-51单片机指令系统2.1 概述2.2 寻址方式2.3 数据传送 指令2.4 算逻运算和移位指令2.5 控制转移和位操作指令2.1:MCS-51指令系统的概述MCS-51共有 111条指令,指令的长度和执行时间因不同的指令而各不相同。l 2.1.1 指令格式l 2.1.2 指令的三种表示形式l 2.1.3 指令的字节数l 2.1.4 指令的分类继续2.1.1 指令格式 :指令格式:既指令的结构形式。OP DATA 或 ADDRESS操作码操作码 操作数或操作数地址操作数或操作数地址由操作码和操作数(或操作数地址)构成指令的结构。举例: MOV A,#0FFHADD A,R0 返回指令的表示形式是识别指令的标志。l 1,二进制的表示形式: (以 “累加器的内容 +08H”为例)00100100B 操作码 OP (加法)00001000B 操作数 DATA( 08H)特点: 能被 CPU直接识别、运行的形式。也称机器码、汇编语言的目标代码。缺点: 不便于阅读、记忆和调试修改。2.1.2 指令的三种表示形式:l 2,十六进制表示方式:它是对二进制形式的一种简化。00100100B 24H 00001000B 08H在实验室等少数环境下,可以将这种形式作为输入程序的一种辅助手段。但是,这种形式的指令格式必须由对应的监控程序把它们翻译成二进制的 “机器码 ”后存入程序存储器并运行。二进制表示的形式 十六进制表示的形式l 3,指令的 “ 助记符 ” 方式(也称 “ 汇编格式 ”):00100100B 24H00001000B 08H ADD A, #08H1,这是一种由 英文单词 或 字母 、 数字 来表征指令功能的形式。是一种便于阅读、书写和交流的表示形式。2,这种 “汇编 ”格式的指令必须把它 “翻译 ”为二进制形式“机器码 ”后才能为 CPU所识别和执行。3,三种不同的表示方法适用于不同的场合。本章内容都以汇编的形式介绍指令系统。二进制表示形式 十六进制表示 汇编格式返回2.1.3 指令的字节数在 MCS-51单片机的指令系统中,因指令操作码和操作数的不同,指令(在存储器中)长度也各不相同。分为单字节、双字节和三字节。l 单字节指令( 49条) : 分 无操作数 、 有操作数 两种。无操作数: 如 INC DPTR 10100011BINC A 00000100B【 特点 】 :操作数隐含在操作码中。含有 操作数寄存器名称 的单字节指令:如: MOV A, R0 11101000BMOV A, R1 11101001B【 特点 】 :寄存器名以三位数代码的形式在指令的后三位。l 双字节指令( 46条):指令的操作码和操作数各占一个字节。 如:MOV A,#data 01110100B data很明显: 8位的操作数本身占据一个字节。程序存储器01110100datann+1 mov a,#data双字节指令在程序存储器的存放示意图l 三字节指令( 16条):指令中的操作数为双字节。如:MOV DPTR,#data16 1001000B,data15-8,data7-0或者:指令中分别包含 1个字节的操作数和 1个字节的操作数地址。如:MOV direct,#data 举例: MOV 20H,#0FFH 10010000data15-8data8-0MOV dptr,#data16OP (75H)direct (20H)data (FFH)MOV direct,#data三字节指令在存储器中存放的方式示意图指令的字节数与指令的运行时间l 指令的字节多是否意味着指令周期就长?指 令 字节数 周期数 指令说明MOV A, R0 1 1 R0内容送累加器 AMOV A, #0FFH 2 1 立即数 FFH送 AMOV 20H, #30H 3 2 立即数 30H送内存 20h单 元MUL AB 1 4 乘法指令INC DPTR 1 1 16位寄存器 DPTR加一从表中可见,指令的字节数与指令周期不是对等的关系 返回2.1.4 指令的分类MCS-51单片机的指令如果按功能划分可以分为五类:l 1,数据传送类指令: 完成数据在单片机内部之间的传送。分为 8位数和 16位两种。除了奇偶位外,指令的执行对PSW无影响。l 2,算术运算指令: 用于操作数之间的加、减、乘除运算。 【 特点 】 :多数情况下:操作数之一在累加器 A中,结果也保留在 A中,运算结果要影响 PSW(进位标志、奇偶和溢出标志等)。l 3,逻辑操作 和 循环移位指令: 操作数之间的逻辑加、逻辑与、取反和异或等操作。多数情况下一个操作数在 A中,结果也存于 A。移位指令分为左移、右移和带进位和不带进位几种情况。与算术类指令相比逻辑类指令基本不影响 PSW的内容。l 4,控制转移类指令: 条件转移、无条件转移,调用和返回。【 特点 】 :通过修改程序指针 PC的内容,使 CPU转到另一处执行,从而改变程序的流向。l 5,位操作指令: 位传送、位置位、位运算和位控制转移等操作。 【 特点 】 :按位操作而不是按字节的操作。位控转移的判断不是检测某一个字节而是对某一个位进行检测并决定是否进行程序转移。这类指令基本不影响 PSW的内容。返回2.2 寻址方式l 在指令的操作数位置上,用于 表征、寻找操作数的方式 定义为 “寻址方式 ”。l 正确的理解、掌握寻址方式,是学习、使用指令的关键 。l 在 MCS-51单片机中,共使用了七种寻址方式。 它们分别是:1,寄存器寻址 5,变址寻址 ; 2,直接寻址 6,相对寻址 ;3,立即数 寻址 7,位寻址 。 4,寄存器间接寻址 继续2.2.1寄存器寻址l 当所需要的 操作数 在内部某一个寄存器 Rn中时,将此寄存器名 Rn直接写在指令的操作数的位置上。如:MOV A,R7 ;将寄存器 R7中的内容送累加器 A中。MOV 20H,R0 ;将寄存器 R0中的数据送内存 20H单元 INC R1 ;将寄存器 R1中的内容加一ADD A,R3 ; A的内容与寄存器 R3的内容相加送 A寄存器寻址方式的指令大多是单字节指令。指令本身并不带有操数,而是含有存放操作数的 寄存器的 3位代码。 以MOV A,Rn为例,使用 R7寄存器,所以 rrr=111,既指令的机器码为: 0EFH1 1 1 0 1 r r r操作码 寄存器代码 返回E8H EFHMOV A,Rn2.2.2 直接寻址l 指令本身含有操作数的 8位或 16位地址。既指令 直接给出了操作数的地址。如:MOV A,30H ;将 RAM30H单元内容送累加器这里 30H是操作数在 RAM中的地址。l 很明显,直接寻址的指令长度是两个或三个字节。程序 ROMOP30H数据 RAM操作数 xnn+130H累加器 A直接寻址示意图使用直接寻址应注意的三个问题:l 1,指令助记符中 direct是用 16进制数表示的操作数地址。当地址恰好在 SFR区域时 ,指令也可以用寄存器名来表示。如:MOV A,80H 可以写成 MOV A,P0 后者用 SFR中寄存器的名字取代它的物理地址 80H。很明显,后者更容易阅读和交流, 所以我们提倡使用SFR中寄存器名称来代替直接地址 。如: MOV A,SBUF ;串口数据缓冲器数据送 AMOV IE,#00H ;初始化中断允许寄存器MOV TH1,#0FEH ;为定时器 1赋初值尽管使用 SFR的寄存器名称来取代直接地址,可以带来程序的可读性,但是在汇编时,仍要将寄存器名字转换为直接地址。l 2,当直接地址时在工作寄存器区中时,可以使用两种寻址方式来访问。 如:MOV A,00H ;将 RAM中 00H单元数据送累加器 AMOV A,R0 ;将工作寄存器 R0的内容送累加器 A这里使用了不同的寻址方式,其指令的结构也不相同。前者是: 11100101(0E5H)、 00000000( 00H) 双字节。后者的机器码是: 11101000(0E8H) 单字节 ;在物理结构上, R0与 RAM的 00H单元恰好是同一单元,所以不同的指令而执行结果是一样的。类似的还有累加器 A: INC A 寄存器寻址方式(单字节);INC ACC 直接寻址方式(双字节);INC 0E0H 直接寻址方式(双字节)。 l 3,在指令系统中: 字节地址 与 位地址 是完全不同的概念。前者用 direct表示,而后者用 bit 表示,但在指令中都是用 16进制表示的数。如:MOV A,20H ;将 RAM的 20H单元内容送 AMOV C,20H ;将位寻址区中的位地址为 20H位内容送PSW 中的 Cy中。片内 RAM( 20H-2FH) 中的位寻址区结构图7F 7E 7D 7C 7B 7A 79 7877 76 75 74 73 72 71 706F 6E 6D 6C 6B 6A 69 6867 66 65 64 63 62 61 605F 5E 5D 5C 5B 5A 59 5857 56 55 54 53 52 51 504F 4E 4D 4C 4B 4A 49 4847 46 45 44 43 42 41 403F 3E 3D 3C 3B 3A 39 3837 26 25 24 23 22 21 202F 2E 2D 2C 2B 2A 29 2827 26 25 24 23 22 21 201F 1E 1D 1C 1B 1A 19 1817 16 15 14 13 12 11 100F 0E 0D 0C 0B 0A 09 0807 06 05 04 03 02 01 002FH20H字节地址返回24H 位地址返回前一次2.2.3立即寻址l 指令本身直接含有所需要的 8位或 16位的操作数。将此数称为 “立即数 ”(使用 #标明)。如:MOV A,#30H ;将( 8位)立即数送累加器 A MOV DPTR,#2000H ; 16位立即数送 DPTR积存器【 注意 】 : MOV A,#30H MOV A,30H 两者的区别。l 立即数寻址的指令长度为 2或 3个字节。74H30Hnn+1ROM累加器 AMOV A,#30H 指令执行流程90H20H00HROMDPTRMOV DPTR,#2000H指令的存储和执行返回2.2.4 寄存器间接寻址l 指令中含有 保存操作数地址的 寄存器 Ri。MOV A,Ri ( i=0、 1)CPU首先根据指令中寄存器名 Ri找到操作数地址,然后再从该地址中找到操作数 x。如: MOV R0,#30H ;立即数送 R0寄存器MOV A,R0 ;从 RAM的 H单元取数送累加器 A【 注意 】 MOV A,R0 和 MOV A,R0 指令的区别。ROM11100110RAMx30H30HR000H累加器 A123使用寄存器间址指令时应注意的三个问题:1,间址寄存器 Ri只能使用 R0、 R1寄存器( i=0、 1)。2,间址方式不仅用于片内 RAM,同样也适用于片外 RAM。对于片内 RAM使用 Ri寄存器,寻址范围为 00H FFH。对于片外 RAM,可以使用 Ri,也可以使用 DPTR做间址寄存器。两者区别在于后者寻址范围为 0000H FFFFH,两者都可以 RAM和 ROM。3,间址方式的指令不能访问 SFR中的单元。如下面的程序是错误的:MOV R1,#80HMOV A,R1 (因为 80H为 SFR的物理地址)MCS-51 片内 、片外 数据存储器示意图特殊功能寄存器SFR通用数据存储器80H7FH00HFFH片内数据存储器 片外数据存储器256B个字节 64KB个字节片外数据存储器64KB0000HFFFFH 注意:1,访问片内 RAM20H存储单元;MOV A,20H2,访问片外 RAM存储单元; MOV R0,#20HMOVX A,R03,尽管片内与片外的 RAM单元 的 00H-FFH地址相重叠但由于指令的不同不会发生地址混乱。返回2.2.5 变址寻址l 指令使用 DPTR或 PC中的内容作为基地址,再与累加器A的内容相加,其和作为操作数地址。如:MOVX A,A+PC ; PC内容与 A的内容相加得操作数地址并将此操作数送 AMOVX A,A+DPTR; DPTR内容与 A的内容相加得操作数地址并将此操作数送 Al 使用变址指令时,要事先分别为 A、 DPTR赋值,以便获得操作数得地址。l 变址指令只适用于对 ROM存储器得访问,如查表等。【 举例 】 : 已知 ROM中 0302H 单元有一个数 x,现要把它送到累加器 A中,试编程。MOV DPTR,#0300H ;立即数送 DPTRMOV A,#02H ;立即数送累加器 AMOVC A,A+DPTR ;从 ROM的 00302单元取数送 A变址寻址示意图02H 0300HROMXALU0302H累加器 A DPTR0300H+ 02H0302HMOVC A,A+DPTR返回2.2.6 相对寻址l 转移指令中使用的一种寻址方式。 MCS-51单片机的指令系统中,有两类转移指令: 相对转移( 2个或 3个字节)绝对转移( 3个字节)。在 绝对转移指令 中 ,指令直接给出转移的目标地址( 2字节地址),执行时将目标地址直接送给 PC,

温馨提示

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

评论

0/150

提交评论