




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章指令系统 硅谷芯微技术贡献网址 www threeway cc 本章重点 理解指令的6种寻址方式 理解各种类型指令的用法 能读懂简单的程序 3 1MCS51指令概述 3 1 1机器指令 用二进制编码表示的 能够被计算机直接识别和执行的语言称为机器语言 对应的指令成为机器指令 机器指令不需要翻译就可直接运行 是计算机发展初期使用的 3 1 2汇编指令 机器语言的繁杂和不便操作直接催生了汇编指令 汇编语言用助记符 符号和数字来表示机器指令 它与机器语言指令一一对应 便于理解和记忆 但是汇编语言并不能直接被机器识别 因此汇编程序在编写好后必须被翻译成相应的机器语言才能执行 而这些工作是由编译器完成的 3 1 3汇编伪指令伪指令和汇编指令属于同一范畴 属于一种符号语言 不同之处在于 汇编指令都有其对应的机器码 而伪指令没有对应的机器码 伪指令的作用在于控制编译器的编译过程 也就是说 汇编指令的实质是对应的机器指令 程序运行过程中才会被执行 而伪指令的实质是编译过程控制语句 编译完成后伪指令就完成使命了 在程序烧录进单片机实际运行过程中并没有伪指令的参与 3 2指令的语句结构MCS 51汇编语言的完整语句结构如图3 1 包括标号 操作码 操作数和注释4部分 其中 操作码和操作数是必选部分 而标号和注释 方括号括起来的部分 是可选项目 寻址方式 是指指令语句中操作数的解析方式 即 操作数按照什么规则来存取 3 3MCS51的6中寻址方式 3 3 1立即寻址又叫立即数寻址 是指在指令中直接给出参与运算的数字 为了区别于作为地址的数字 把这种直接使用的数字称为立即数 并在其前面加上 以区别于作为地址的数字 因为立即数本质上即是一个数字 因此其只能作为源操作数而不能作为目的操作数 目的操作数需要的是一个地址 如 MOVA 30H 把 30H复制到A中 3 3 2直接寻址操作数来源于直接地址 所谓直接地址 是指RAM区域的一个字节型地址空间 大多数直接寻址会使用用户RAM区 30H 7FH 当位寻址区 20H 2FH 被按字节寻址时 也属于直接寻址范畴 直接寻址可作为源操作数或目的操作数 当其用作源操作数时 实际作为操作数的是该地址内存储的数据 如MOV30H 40HMOVA 30H第二句中源操作数的30H即为直接寻址 此时实际使用的操作数其实是存储于30H中的 40H 所以程序执行后A中实际值为 40H 直接寻址作为目的操作数时 实际指示的是这个地址本身 而不是地址内的数 因为目的操作数的任务是存储操作后的结果数据 因此需要的是一个地址 虽然命名为操作数 但实际叫 存储地址 更加确切 直接寻址作为目的操作数的一个实例是上面第一句语句中的30H 3 3 3寄存器寻址也叫寄存器直接寻址 以明确区别于寄存器间接寻址 此处的寄存器指的是工作寄存器R0 R7 无论作为源操作数还是目的操作数 寄存器寻址的特点和直接寻址均很类似 实际上 在内部结构一节我们已经知道 工作寄存器区和用户RAM区同属于RAM区 在逻辑上本来就是同级的 MOVA R0 3 3 4寄存器间接寻址寄存器间接寻址用于源操作数时 语句中的寄存器中取出的不再是操作数 而是操作数的地址 真正的操作数需要用这个地址去寻址RAM区才能得到 同样 寄存器间接寻址用于目的操作数时 实际目的地址不再是语句中的寄存器 而是该寄存器中内容对应的RAM区地址 如图3 2所示 R0寄存器内装入 34H 在执行完语句MOVA R0后 实际取到的操作数是RAM区域的34H地址处的地址 56H 符号是间接寻址的标志符 不能省略或者混用 此外 间接寻址寄存器只能使用工作寄存器区的R0或R1 其余R2 R7不可使用 4个区中的R0和R1均可 3 3 5基址 变址寻址首先 基址 变址寻址也属于一种间接寻址 即不是直接给出操作数 而是给出操作数的地址 与寄存器间接寻址 操作数地址由工作寄存器给出 不同 基址 变址寻址的操作数地址由两部分给出 分别成为基地址和变地址 典型的基址 变址寻址的实例如 MOVCA A DPTR其中 DPTR数据指针内指出基地址 A中存放变地址 A DPTR共同指出了真实操作数的地址 3 3 6位寻址由于51单片机内部包含一个位处理器 因此具有位寻址能力 可以位操作的内容有RAM的位寻址区 20H 2FH 可位寻址的SFR等 MCS 51的指令系统中有专门设置的位寻址指令用于按位操作这些内容 3 4常用符号 Rn 工作寄存器中的寄存器R0 R1 R7之一 Ri 工作寄存器中的寄存器R0或R1 data 8位立即数 data16 16位立即数direct 片内RAM或SFR的地址 8位 间接寻址寄存器Bit 片内RAM或SFR的位地址addr11 11位目的地址addr16 16位目的地址rel 补码形式的8位地址偏移量 偏移范围为 128 127 位操作指令中 该位求反后参与操作 不影响该位X 片内RAM的直接地址或寄存器 X 相应地址单元中的内容 箭头左边的内容送入箭头右边的单元内 3 5指令分类 以下分数据传送类 算术运算类 逻辑运算与移位类 控制转移类 布尔操作类共5个大类来详细讲解MCS 51的指令系统 3 5 1 数据传送类助记符 MOV MOVX MOVCXCH XCHD SWAPPUSH POPMOV 将后面的立即数 地址中的数据 放到前面的地址 寄存器 中 MOVR0 R1MOVX 用于片外寻址 由于使用外部存储器技术已经基本被淘汰 在此就不做过多讲解 MOVC 主要用于查表中 是将ROM中的数取出 本组指令也被称为查表指令 常用此指令来查一个已做好在ROM中的表格 MOVDPTR T tabMOVA R0MOVCA A DPTR T tab DB0 1 4 9 16 25 XCH 用于两个字节型变量互相交换数据 XCHD 用于两个字节型变量互相交换低4位数据 高4位保持不变 SWAPA 指令 用于将A的高4位和低4位互相交换 PUSH POP 堆栈操作指令 分别为压栈和弹栈操作 这两句经常用来在进入中断服务程序时保存ACC和PSW 以保证主程序中的ACC和PSW不会被中断服务程序破坏掉 注意压栈和出栈时 先压后出 后压先出 总结 数据传送类指令结构简单 容易理解 关键在于熟练掌握并应用于各种寻址方式 3 5 2 算术运算类算术运算主要对8位无符号数 也可用于带符号数运算 包括 加 减 乘 除 加1 减1运算指令影响PSW有关位 助记符 ADDADDCINCMULDASUBBDECDIVADD 前后两数相加 和放入前面寄存器 影响进位标志位C ADDC 前后两数相加再加上进位标志位C的值 和放入前面寄存器 ADDC往往和ADD配合使用 完成多字节加法 结果对C有影响 INC 对地址或者寄存器里面的数据进行加一 不影响进位标志位C SUBB 前后两数想减再减去C的值 差放入前面寄存器 同ADDC 结果对C有影响 DEC 对地址或者寄存器里面的数据进行减一 不影响进位标志位 MULAB AB两数相乘 积的低八位放入A中 高八位放入B中 DIVAB AB两数相除 商放入A中 余数放入B中 DAA 十进制调整 可以看成对十六进制数进行十进制运算 如下 MOVA 49H A 49HADDA 1 加一DAA A 50H 3 5 3逻辑运算类 助记符 ANLORLCPLCLRRRRLRRCRLCANL 前后两数按位相与 结果放入前面寄存器 ORL 前后两数按位相或 结果放入前面寄存器 CPL 对累加器A bit位地址 数据按位进行取反 CLR 对累加器A bit位地址 中数据清零 RR 循环右移 RRC 带C循环右移 RL 循环左移 RLC 带C循环左移 助记符 LJMPAJMPJMPSJMPJZJCJBJNZJNCINBLCALLACALLRETRETICJNEDJNZLJMP 无条件跳转 寻址范围64k AJMP 无条件跳转 寻址范围2k JMP 散转 跳转地址由A DPTR决定 SJMP 相对跳转 范围上下128字节 JZ A中数据为0跳转 不为0向下执行 JNZ 与JZ相反 JC JB C bit位为0向下执行 不为0跳转 JNC JNB 与JC JB相反 LCALL ACAlL 子程序调用 前者调用范围64k 后者2K RET RETI 前者 子程序返回 与LCALL ACALL配合使用 后者只用于中断返回 CJNE 两数相比较相等则向下执行 不等则跳转 同时前面数大于后面数 C 0 后面数大于前面数 C 1 DJNZ 该数减一是否为0 为零则向下执行 不为0则跳转 CJNE和DJNZ常用来实现循环程序结构 即是两种最典型的循环结构 3 5 4控制转移类 3 5 5 布尔操作类 位操作 助记符 MOVCLRCPLSETBANLORLJB JNB JC JNC MOV 对位进行赋值 CLR 对该位进行清零 CPL 对该位进行取反 SETB 对该位置1 ANL 相与 ORL 相或 3 5 6 伪指令 助记符 ORGCSEGDBEQUENDDSEGDWBIT ORG伪指令用于指定该指令语句后一段语句生成的机器码在ROM内存储的起始点 每条ORG指令的作用范围为本条语句后面的一条指令开始到下一个ORG指令出现为止 END伪指令为汇编程序结束标志 编译器将无视END后的指令语句 DB DW伪指令用于在ROM中开辟一些数值区域 DB开辟的数值区域以字节 8bit 为单位 DW开辟的数值区域以双字节 16bit 为单位 EQU指令和DA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学数学教师信息技术2.0网络研修计划
- 火锅炒菜培训课件模板
- 税务服务大厅管理办法
- 税务管理资金管理办法
- 税收征管资料管理办法
- 空气夹层库存管理办法
- 站前绿化广场管理办法
- 管理办法邮件发布文案
- 管网运行维护管理办法
- 重冶火法冶炼工新员工考核试卷及答案
- 2025年彩票兑奖岗笔试备考秘籍
- 1.2 从立体图形到平面图形第3 课时截一个几何体 北师大版七年级数学上册教案
- 2025版食品加工委托生产合同范本
- 2025年老司机三力测试题及答案
- 静脉输血并发症护理查房
- 《医用化学基础》教案
- 水箱拆除专项施工方案
- GB/T 21733-2008茶饮料
- 纪委案件审理课件教材
- CorelDRAW教学讲解课件
- 湘美版美术一年级上册全册课件
评论
0/150
提交评论