




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章MCS 51单片机指令系统 内容提要 3 1指令系统简介 3 2寻址方式 3 3数据传送类指令 3 4算术运算类指令 3 5逻辑运算类指令 3 6控制转移类指令 3 7位操作类指令 指令系统 3 1指令系统简介 一 指令的概念 指令 计算机按规则执行的某种操作命令 指令是程序语句的基本组成 CPU所具有的全部指令的集合称为指令系统 指令 操作码 操作数操作码 表示了该指令所能执行的操作功能 操作数 表示参加操作的数的本身或操作数所在的地址 MCS 51指令格式 标号 操作码助记符 目的操作数 源操作数 注释 LOOP MOVA 40H 取参数 助记符举例 MOV move传送XCH exchange交换ANL andlogic与逻辑运算XRL exclusiveor异或运算MUL multiply乘法RR rotateright右循环SJMP shortjump短跳转RET return子程序返回 二 MCS 51系列单片机的指令系统111条指令 共分五大类 数据传送类 算术运算类 逻辑运算类 控制转移类 位操作类 指令中操作数的描述符号 Rn 工作寄存器R0 R7Ri 间接寻址寄存器R0 R1Direct 直接地址 包括内部128BRAM单元地址 21个SFR地址 data 8位常数 data16 16位常数addr16 16位目的地址addr11 11位目的地址rel 8位带符号的偏移地址DPTR 16位外部数据指针寄存器bit 可直接位寻址的位 A 累加器B 寄存器BC 进 借位标志位 或位累加器 间接寄存器或基址寄存器的前缀 指定位求反 x x中的地址中的内容 当前指令存放的地址 寻找操作数存放单元的地址的方式 共7种方式 1 立即数寻址指令中直接给出操作数本身 该操作数称为立即数 出现在指令中 用 作前缀MOVA 20H 3 2寻址方式 2 寄存器寻址操作数存放在工作寄存器R0 R7中 累加器A 寄存器B DPTR或为累加器C中 MOVA R23 直接寻址指令中直接给出操作数的地址 可访问内部RAM SFR以及位寻址区 MOVA 30H MOV30H 20H MOVR0 30H MOVA R0 4 寄存器间接寻址指令中寄存器的内容作为操作数存放的地址 在间接寻址寄存器前用 表示前缀 能用于间接寻址的寄存器有R0 R1 DPTR SP 用于访问内外RAM 例如 5 变址寻址操作数地址 变地址 基地址基地址寄存器DPTR或PC变址寄存器 A该寻址方式常用于访问程序存储器 查表 如MOVCA A DPTR 7 位寻址SETB18HCLREAMOV32H CORLC 32H 6 相对寻址把指令中给定的地址偏移量与本指令所在单元地址 PC内容 相加得到真正有效的操作数所存放的地址 如JC60H 设 PC 2000H为基址 相对偏移量为60H 则当C 1时 转移的目的地址 2000H 2 60H 3 3数据传送类指令 一 内部RAM数据传送类1 一般数据传送指令 MOVA Rn ARn以下类似 MOVA directMOVA RiMOVA dataMOVRn AMOVRn directMOVRn data MOVdirect RnMOVdirect direct1MOVdirect RiMOVdirect dataMOV Ri AMOV Ri directMOV Ri dataMOVDPTR data16 唯一的16位数据传送指令 上述指令不影响任何标志位 但PSW的P位除外 direct A MOVdirect A 注意 MOVRn RnMOV Ri RiMOVRn RiMOV data A等等指令是非法指令 例 顺序执行下列指令序列 求每一步执行结果 MOVA 30HMOV4FH AMOVR0 20HMOV R0 4FHMOV21H 20H A 30H 4FH 30H R0 20H 20H 30H 21H 30H 2 direct 2 栈操作指令PUSHdirectPOPdirect不影响任何标志位 PUSHdirect指令执行中 机器自动进行两步操作 1 SP 1 例1 设SP 09H DPTR 0123H 分析 执行PUSHDPLPUSHDPH后 各单元中的内容 SP SP POPdirect指令执行中 机器也自动进行两步操作 1 direct SP 2 SPSP 1例2 设SP 0BH 0BH 01H 0AH 23H执行POPDPHPOPDPL后 各单元中的内容 结论 1 PUSH与POP操作过程刚好相反 2 进 出栈规则 先进后出 后进先出 应注意指令书写先后顺序 3 可用于 保护现场 恢复现场 3 字节交换指令XCHA RnXCHA direct整字节交换XCHA RiXCHDA RiSWAPA半字节交换不影响任何标志位 二 外部RAM数据传送MOVXA RiMOVXA DPTRMOVX Ri AMOVX DPTR A执行过程中会使 WR RD有效 例 试编写一程序段 实现将外RAM0FAH单元中的内容传送到外RAM04FFH单元中 解 MOVDPTR 04FFHMOVR0 0FAHMOVXA R0MOVX DPTR A 三 查表指令与ROM之间的数据传送 MOVCA A DPTRMOVCA A PC PC PC 1 A A PC 执行后会使 PSEN有效 MOVC含义是传送常数 以DPTR为基地址的指令 可在ROM的64KB范围内查表 而以PC为基地址的指令只能在PC 1为中心上 下256B范围内查表 例 查表法求Y X2 设X 0 X 15 在片内RAM的20H单元中 要求将查表求Y 存入片内RAM21H单元 1 ORG1000HSQU MOVDPTR TAB 确定表首地址 基地址 MOVA 20H 取X 偏移量 MOVCA A DPTR 查表求Y X2MOV21H A 保存YRET 子程序结束 其它程序段ORG3000H 常数表格首地址TAB DB00 01 04 09 225 平方表 3 4算术运算类指令 包括 加 减 乘 除 加一 减一 一 加法指令ADDA Rn A A Rn 以下类同 ADDA directADDA RiADDA data ADDCA Rn A A Rn C 以下类同 ADDCA directADDCA RiADDCA data上述四条指令多用于多字节数相加 INCA A A 1 以下类同 INCRnINCdirectINC RiINCDPTR 带进位加法指令ADDC用于多字节运算 例 设双字节数X存在片内RAM41H 40H单元 Y存在42H 43H单元 编程求Z X Y 并存入片内RAM单元44H 45H 46H ADDS MOVA 40HADDA 42HMOV44H AMOVA 41HADDCA 43HMOV45H AMOVA 0ADDCA 0MOV46H ARET 低字节相加 高字节相加 计算高字节进位 子程序结束 二 减法指令SUBBA Rn A A Rn C 以下类同 SUBBA directSUBBA RiSUBBA data注意 减法之前先清零C DECA A A 1 以下类同 DECRnDEC RiDECdirect 三 乘法和除法指令乘法 MULAB A B 积的低8位在A中 积的高8位在B中 C总为0 除法 DIVAB A B 商在A中 余数在B中 若 B 0 则 OV 1 C 0 3 5逻辑运算类指令 共分两大类 单字节逻辑操作 双字节逻辑操作 共24条 一 单字节逻辑操作指令CLRA A 0CPLAA中8位按位求反 循环左移 右移指令 RLARLCARRARRCA注 左移一位相当于乘2 右移一位相当于除2 二 双字节逻辑操作指令 与操作 ANLA Rn A A Rn 以下类同 ANLA directANLA RiANLA dataANLdirect AANLdirect data例1 P1 35H 使其高4位输出0 低4位不变 解 ANLP1 0FH此做法称为 屏蔽 位 或操作 ORLA Rn A A Rn 以下类同 ORLA directORLA RiORLA dataORLdirect AORLdirect data 例2 将A中的低3位送入P1中 并且保持P1中高5位不变 ANLA 07HANLP1 0F8HORLP1 A P1 P1 7P1 6P1 5P1 4P1 3A2A1A0这称为 数位组合 异或操作 XRLA Rn A A Rn 以下类同 XRLA directXRLA RiXRLA dataXRLdirect AXRLdirect data相同为0 不同为1例3 设 P1 0FFH 11111111B 执行 XRLP1 00110001B结果按 00110001取反 即 P1 11001110B CEH这称为 指定位取反 在上述ANL ORL XRL操作中 用于端口操作时 无论P0 P3是第一 还是第二操作数 都遵循 读 修改 写 端口锁存器的操作 3 6控制转移类指令 作用 改变程序计数器PC的值 从而改变程序执行方向 分为四大类 无条件转移指令 条件转移指令 调用指令 返回指令 LJMPaddr16 长跳转指令转移目的地址addr16 PC 0000H FFFFH 64KBAJMPaddr11 短跳转指令转移目的地址的形成 先 PC PC 2 然后PC15 11不变 PC10 0addr10 064KB 216 25 211 32 2KB转移目的地址与 PC 2在同一个2KB范围内 SJMPrel 相对转移 相对寻址 转移目的地址 PC 2 rel 所以rel 转移目的地址 PC 2实际使用中常写成SJMPaddr16 标号 汇编时会自动转换成rel 自动算出具体的地址值 SJMP 动态暂停指令 表示该指令存放的首地址 JMP A DPTR 间接转移 散转移指令 转移目的地址 A DPTR 本指令不影响标志位 不改变 A及DPTR中的内容 常用于多分支程序结构中 可在程序运行过程中动态地决定程序分支走向 LCALLaddr16 长调用ACALLaddr11 短调用 LCALLaddr16 转移范围64KB 不影响标志位 执行中自动完成如下过程 PCPC 3SPSP 1 SP PC7 0 保护断点地址低字节 SPSP 1 SP PC15 8 保存断点地址高字节 PCaddr16 目的地址送PC 转子程序 二 调用及返回指令 执行结果 SP 09H 09H 21H 08H 03H PC 3456H 转移范围与 PC 2在同一个2KB内 不影响任何标志位 执行中机器自动完成下列过程 PCPC 2SPSP 1 SP PC7 0SPSP 1 SP PC15 8PC10 0addr10 0 ACALLaddr11 返回指令 从子程序返回主程序 RET 调用子程序返回 RETI 中断子程序返回 PC15 8SPSP 1PC7 0 SP SPSP 1 其机器自动操作过程如下 SP 空操作指令NOP 空操作不执行任何操作 仅仅使 PC 1 继续执行下条指令 不影响标志位 在ROM中占一个字节 用于延时调整 三 条件转移指令实现按照一定条件决定转移的方向 分三类 判零转移指令比较转移指令循环转移指令 JZrel 若 A 0 则转移 否则顺序执行 JNZrel 若 A 0 则转移 否则顺序执行 转移目的地址 PC 2 rel不影响任何标志位 1 判零转移 例1 将外RAM的一个数据块 首地址为DATA1 传送到内部数据RAM 首地址为DATA2 遇到传送的数据为零时停止传送 试编程 解 MOVR0 DATA2MOVDPTR DATA1LOOP1 MOVXA DPTRJZLOOP2MOV R0 AINCR0INCDPTRSJMPLOOP1LOOP2 SJMPLOOP2 2 比较转移指令功能 比较二个字节中的值 若不等 则转移 CJNEA data relCJNEA direct relCJNE Ri data relCJNERn data rel 该类指令具有比较和判断双重功能 比较的本质是做减法运算 用第一操作数内容减去第二操作数内容 但差值不回存 转移目的地址 PC 3 rel若第一操作数内容小于第二操作数内容 则 C 1 否则 C 0 例2 设P1口的P1 0 P1 3为准备就绪信号输入端 当该四位为全1时 说明各项工作已准备好 单片机可顺序执行 否则 循环等待 解 WAIT MOVA P1ANLA 0FHCJNEA 0FH WAIT P1 0 P1 3不为全1时 返回WAITMOVA R2 3 循环转移指令DJNZRn rel 二字节指令 DJNZdirect rel 三字节指令 本指令也为双功能指令 即减1操作和判断转移操作 第一操作数内容减1后 若差值不为零 则转移 否则顺序执行 转移目的地址 PC 2或3 rel 例3 将8031内部RAM的40H 4FH单元置初值 A0H AFH 解 MOVR0 40HMOVR2 10HMOVA 0A0HLOOP MOV R0 AINCR0INCADJNZR2 LOOP 3 7位操作类指令 包括 位传送指令 条件转移指令 位运算指令 位操作由单片机内布尔处理器来完成 位地址的四种表示 1 使用直接位地址表示 如20H 30H 33H等 2 使用位寄存器名来表示 如C OV F0等 3 用字节寄存器名后加位数来表示 如PSW 4 P0 5 ACC 3等 4 字节地址加位数来表示 如20 0 30 4 50 7等 一 位传送指令MOVC bitMOVbit C功能 C bit 或 bit C 二 位状态控制指令CLRbit bit 0SETBbit bit 1CPLbit bit bit ANLC bit C C bit ANL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国广电吉林市2025秋招网络优化与维护类专业追问清单及参考回答
- 2025年校长招聘考试试题及答案
- 骑手培训考试试题及答案
- 中国广电黔西南自治州2025秋招网申填写模板含开放题范文
- 词语拼音考试试题及答案
- 九江市中石油2025秋招心理测评常考题型与答题技巧
- 国家能源深圳市2025秋招面试专业追问及参考化学工程岗位
- 中国广电绥化市2025秋招心理测评常考题型与答题技巧
- 肇庆市中石化2025秋招面试半结构化模拟题及答案油气储运与管道岗
- 东莞市中石化2025秋招笔试模拟题含答案油田勘探开发岗
- 三相异步电动机的调速
- 新概念第一册单词默写表
- 近三年投标没有发生过重大质量安全事故的书面声明
- 成人高血压食养指南(2023年版)
- 【教学设计】圆锥曲线的方程 大单元教学设计
- GB/T 27689-2011无动力类游乐设施儿童滑梯
- GB/T 1885-1998石油计量表
- GB 7231-2003工业管道的基本识别色、识别符号和安全标识
- 医疗机构财政电子票据管理平台建设方案
- 正视青春期孩子的逆反心理专家讲座
- 食品安全主题班会课件
评论
0/150
提交评论