第2章 单片机指令系统_第1页
第2章 单片机指令系统_第2页
第2章 单片机指令系统_第3页
第2章 单片机指令系统_第4页
第2章 单片机指令系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

51单片机共有111条指令 分成6类 它的主要特点是 1 指令较短 最长的只有3个字节 所以执行速度快 请看下面3条指令 第2章MCS51单片机的指令系统 2 功能强大 8位的乘除运算可用一条指令完成 3 位操作丰富 适于进行开关量的控制 4 片内RAM统一编址 片外存储器独立编址 端口操作直接用传送命令 MOV 使用方便 指令的构成 标号 操作码目的操作数 源操作数 注释AAA MOVA 20H 将立即数20H送累加器A 1 指令中的常用符号 Rn n 0 7 表示当前工作寄存器R0 R7中的一个Ri i 0 1 代表R0和R1寄存器中的一个 用作间接寻址寄存器 dir 8位直接寻址的字节地址 片内RAM和SFR data 8位立即数 即8位常数 可以为2进制 B 10进制 16进制 H 字符 等 data16 表示16位立即数 即16位常数 取值范围为 0000H 0FFFFHaddr16 表示16位地址addr11 表示11位地址rel 相对偏移量 为一字节补码 用于相对转移指令中bit 位地址 在位地址空间中 表示当前指令的地址 用来表示存储单元的内容 间接寻址的前缀A B C 分别是累加器 B寄存器和进位标志位 位操作时的取反前缀 2 2 1寻址方式寻址就是寻找操作数的地址 在计算机中 就是用来确定操作数 用什么方式从什么地方来找到所需要的操作数 寻址方式是衡量CPU的性能的重要指标之一 因为寻址方式的快捷就决定了执行速度 寻址方式的多样性就决定了编程的灵活程度 MCS51具有7种寻址方式 它们是 立即 直接 寄存器直接 寄存器间接 变址 相对和位寻址 1 立即寻址指令中直接给出操作数的寻址方式 在51系列单片机的指令系统中 立即数用一个前面加 号的8位数 data 如 30H 或16位数 data16 如 2052H 表示 立即寻址中的数 称为立即数 立即数不能做源地址 例如 MOVA 30HMOVDPTR 1234H 3 3 寄存器寻址操作数存放在寄存器中 寻址空间 工作寄存器组和所有的SFR寄存器 A在使用PUSH POP指令的时候要记作ACC 例如 MOVA R0 R0 AMULAB A B BAINCDPTR DPTR 1 DPTRPUSHACC 将ACC压入堆栈 2 直接寻址操作数的地址直接出现在指令中 寻址空间 51系列片内的128字节的RAM和SFR中的寄存器 对SFR操作的时候 既可使用它的地址 也可以直接使用寄存器名 52系列内部RAM有256个字节时 80H之后的地址空间只能使用寄存器间接的方式来寻址 例如 MOV30H 40HMOVR5 DPH 等价于MOVR5 83H 4 4 寄存器间址 寄存器间接寻址 操作数存放在以寄存器内容为地址的单元中 寻址空间 片内RAM00H FFH的地址空间和片外数据存储器0000H FFFFH的地址空间 可使用的寄存器只有DPTR和Ri 用它们之前要先把要寻的地址装入这些寄存器中 凡是间接寻址的寄存器之前都要加 号来和直接寻址的方式区分 可用于间接寻址的寄存器只有工作寄存器组中的R0和R1 DPTR和SP SP是隐含的 不出现在指令中 当采用寄存器间接寻址方式时 由于片内的存储单元只有128个 所以只用R0或R1就够了 如果是访问外部存储单元时 由于有16位地址 所以要先设置好P2高8位 再通过R0或R1送低8位 通过P0口 或者就由DPTR直接给出16位地址到P2和P0口来实现地址的查找 例如 MOVR0 20HMOV R0 A A 20H 地址的内部RAMMOVXA R1 外部RAM 地址P2R1 的内容 AMOVX DPTR A A 以DPTR内容为地址的外部RAM 5 5 位寻址寻址空间 片内RAM中20H 2FH中的128个位地址及SFR中的可位寻址的位地址寻址 通常把进位位C当作位操作的累加器 为直观起见 当位地址有地址名时 建议选地址名做地址 例如 MOVC 20H 20H位的内容送CY标志位 C称为位累加器 MOV5FH CANLC P1 0SETBTR0CLR8CH由于位地址和字节地址相同 所以在编程的时候注意如何将其区分 一般的方法有3种 用地址的别名 别名是唯一的 所以不会弄错且便于程序的阅读 有专门的位操作指令 SETB CLR CPL 可凭借位指令的操作码来区别 根据指令的操作数 是字节还是位来予以区分 例如 MOVC P0 0SETB20HMOV5FH P1 1 6 6 变址寻址主要用于程序存储器的寻址 所以有专门的MOVC指令 它的寻址方法是将PC或DPTR作为基址 再加上作为偏移量的A寄存器的内容 形成一个完整的16位的地址 将某程序存储单元的内容读出 7 7 相对寻址主要用于各种跳转 它的寻址方法是以当前的PC为基址 加上指令给出的一个字节的补码 让PC指针实现前跳或者后跳 由于跳转指令自身有2字节或3字节之分 相对寻址的执行是在跳转指令执行之后 所以通常计算的公式是 PC 2 3 指令给出的补码 SJMP 13H 5112H 13H SJMP13H 片外ROM 5112H PC 2 5127H 执行完后PC的位置 5112H 2 13H 5127H 8 2 2传送与交换指令为了能简洁地介绍指令功能和操作规则 采用图解的方式来加以说明 先介绍符号及方法 箭头 指出源操作数到目的操作数的方向 其上的英文是操作码符圆框 累加器A或C的符号实线矩形框 操作数虚线操作数 表示立即数2 2 1传送类指令MOV1 MOV 内部RAM SFR之间的传送指令 共18条 9 2 堆栈操作指令入栈指令 PUSHdir SP SP 1 SP dir 出栈指令 POPdir dir SP SP SP 1 SP 错误的 PUSHAPUSHDPTRPUSHR0PUSHR1 10 3 外部程序存储器和A累加器之间的传送 共2条 11 4 外部数据存储器和A累加器之间的传送 共4条 12 2 2 2数据交换指令 共5条 13 2 3逻辑运算和算术运算指令2 3 1对标志位的影响P标志仅对A操作的指令有影响 传送类 加1 减1和逻辑运算指令不影响CY OV AC 加减运算影响OV CY P和AC 乘除指令使CY 0 当乘积大于255或除数为0 OV 1 2 3 2逻辑运算类指令 25条 14 2 3 3算数运算类指令 23条 Rn Ri direct data ADD ADDC SUBB ADD ADDC SUBB ADD ADDC SUBB INC DEC DA ADD ADDC SUBB B INCDEC INCDEC INCDEC MULDIV DPTR INC 1 乘除指令MULAB A B BADIVAB A B A 商 B 余数 2 十进制调整指令DA它只能对用BCD码进行加法运算之后存放在累加器中的结果进行操作 它调整的规则如下 15 16 2 3 4综合例子 17 18 2 4控制转移指令 共23条 这一类指令的功能是改变指令的执行顺序 转到指令指示的新的PC地址执行 MCS 51单片机的控制转移指令有以下类型 无条件转移 无需判断 执行该指令就转移到目的地址 条件转移 需判断标志位是否满足条件 满足条件转移到目的地址 否则顺序执行 绝对转移 转移的目的地址用绝对地址指示 通常为无条件转移 相对转移 转移的目的地址用相对于当前PC的偏差 偏移量 指示 通常为条件转移 长转移或长调用 16位 目的地址可以在整个64KB地址范围内 绝对转移或绝对调用 11位 目的地址在当前的2KB地址范围内 短转移 8位 目的地址距当前PC 128 127 地址范围 上面转移指令类型虽然多 功能都是转移到新地址执行 差别仅在于有条件还是无条件及目的地址在指令机器码中的表现形式 实际源程序编程中 转移的目的地址均是以符号地址表示 它对应机器码会由编译系统自行填入 19 2 4 1调用和返回指令1 长调用指令 LCALLAddr16 3字节指令 2 绝对调用指令 ACALLAddr11 2字节指令 它们都是绝对调用 只是一个调用的空间可达64K 16位地址 另一个只能在规定的2K 11位地址 的范围内调用 3 子程序返回指令 RET4 中断子程序返回指令 RETI它们必须出现在子程序的结尾 执行后从栈顶弹出断点到PC 返回原来的断点处继续执行 20 解 根据程序存储区域的分布 0100H和0205H都位于0000H 0800H的第一个2K的区域 所以 只要入口为0205H的子程序的长度不超过800H的范围 就可以使用ACALL的指令 2 4 2转移指令1 无条件转移指令 1 长转移指令LJMPaddr16 2 绝对转移指令AJMPaddr11 3 间接转移 散转 指令JMP A DPTR可以用它来实现多分支转移 2 条件转移指令根据右图 很容易地可写出相应的指令 JZrelJNZrelDJNZRn relDJNZdirect rel CJNE Ri data relCJNEA data relCJNERn data relCJNEA direct rel 21 2 4 3空操作指令NOP该指令经取指 译码后不进行任何操作 空操作 而转到下一条指令 常用于产生一个机器周期的延时 或上机修改程序时作填充指令 以方便增减指令 例1 试说明以下一段程序运行后A中的结果 MOV23H 0AHCLRALOOP ADDA 23HDJNZ23H LOOPSJMP 根据程序分析可知 A 10 9 8 7 6 5 4 3 2 1 55 37H 2 4 4应用举例 例2 编写程序 要求读P1端口上的信息 若不为55H 则程序等待 直到P1端口为55H时 程序才往下继续执行 MOVA 55H A 55HCJNEA P1 P1 55H 则程序循环执行 22 23 2 5位操作指令 MCS 51单片机的特色之一就是具有丰富的位处理功能 以进位标志CY为位累加器C 使得开关量控制系统的设计变得十分方便 在程序中位地址的表达有多种方式 用直接位地址表示 如D4H 用 操作符号表示 如PSW 4 或D0H 4用位名称表示 如RS1 用用户自定义名表示 如

温馨提示

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

评论

0/150

提交评论