MCS-51系列单片机的指令系统及汇编语言程序设计.ppt_第1页
MCS-51系列单片机的指令系统及汇编语言程序设计.ppt_第2页
MCS-51系列单片机的指令系统及汇编语言程序设计.ppt_第3页
MCS-51系列单片机的指令系统及汇编语言程序设计.ppt_第4页
MCS-51系列单片机的指令系统及汇编语言程序设计.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

主要内容寻址方式指令系统传送与交换指令算术运算 逻辑运算指令控制转移指令位操作指令伪指令程序设计举例 第3章MCS 51系列单片机的指令系统及汇编语言程序设计 计算机通过执行程序完成人们指定的任务 程序由一条一条指令构成 能为CPU识别并执行的指令的集合就是该CPU的指令系统 MCS 51单片机汇编语言指令格式 操作符目的操作数 源操作数操作符指明该指令完成什么操作 操作数是指明该指令的操作对象 目的操作数是存放结果的 指令中操作数提供的方式称为寻址方式 指令中的常用符号Rn 表示当前工作寄存器R0 R7中的一个 Ri 代表R0和R1寄存器中的一个 用作间接寻址寄存器 dir 8位直接字节地址 片内RAM和SFR data 8位立即数 即8位常数 可以为2进制 B 10进制 16进制 H 字符 data16 表示16位立即数 即16位常数 取值范围为 0000H 0FFFFHaddr16 表示16位地址addr11 表示11位地址rel 相对偏移量 为一字节补码 用于相对转移指令中bit 位地址 在位地址空间中 表示当前指令的地址 指令中直接给出操作数的寻址方式 在51系列单片机的指令系统中 立即数用一个前面加 号的8位数 data 如 30H 或16位数 data16 如 2052H 表示 立即寻址中的数 称为立即数 例如指令 MOVA 58H 58H A 3 1寻址方式3 1 1立即寻址 操作数的地址直接出现在指令中 寻址对象 内部数据存贮器 使用它的地址 特殊功能寄存器 既可使用它的地址 也可以直接使用寄存器名 位地址空间 程序存储器空间例 MOVA 40H 40H AMOV40H 41H 41H 40H MOVP0 45H 45H P0MOV80H 45H 45H P0MOVC 18H 位地址18H C 3 1 2直接寻址 操作数存放在寄存器中 寻址对象 A B C DPTR R0 R7 B仅在乘除法指令中为寄存器寻址 在其他指令中为直接寻址 A可以寄存器寻址又可以直接寻址 直接寻址时写作ACC例如 MOVA R0 R0 AMULAB A B BAADDA ACC A A A 3 1 3寄存器寻址 操作数存放在以寄存器内容为地址的单元中 用做间址的寄存器为Ri i 0 1 DPTR 对片内的间接寻址用Ri i 0 1 如 MOVR0 20HMOV R0 A A 20H 对片外的间接寻址可用Ri i 0 1 或DPTR如 MOVX DPTR A A 以DPTR的内容为地址的外部RAM中MOVXA R1 A 以P2R1内容为地址的外部RAM中 PUSH和POP指令的源操作数是以SP间接寻址注意 寄存器间接寻址不能访问SFRMOVR1 81HMOVA R1 不能访问SP 只能用MOVA SP 3 1 4寄存器间址 变址寻址只能访问程序存储器 操作数所在位置的地址由DPTR或PC寄存器与A的内容相加后形成 其中累加器A内容是可变的 变址寻址只有三条指令 MOVCA A DPTR A DPTR AMOVCA A PC A PC AJMP A DPTR A DPTR PC注意 A的内容是无符号数 PC值是指令的当前PC值 即下条指令的PC值 3 1 5变址寻址 3 1 6相对寻址 变址寻址只能访问程序存储器 相对寻址是将程序计数器PC的当前值与指令第二字节给出的偏移量相加 从而形成转移的目标地址 如 JZ61H注意 相对偏移量是一字节有符号数 用补码表示 偏移范围是 128 127 PC值是指令的当前PC值 即下条指令的PC值 源程序中偏移量常用符号地址表示 对可位寻址的位地址寻址 包括片内RAM的位地址空间和可位寻址的SFR 地址能被8整除 如 MOVC 20H 位寻址MOVA 20H 字节寻址以上两条指令究竟是位寻址还是字节寻址 根据两操作数类型一致的原则 由另一个操作数决定 3 1 7位寻址 寻址方式与存储空间的对应关系 内部RAM SFR之间的传送MOV指令 3 2指令系统3 2 1数据传送与交换指令 例R1 20H 20H 55H MOVA R1执行后 A 55H 例 40H 30H MOVR7 40H执行后 R7 30H 例MOVR7 40H执行后 R7 40H 注意 寄存器之间无传送 寄存器间址和寄存器之间无传送 立即数不能做目标地址 2 外部存储器和A累加器之间的传送 MOVX MOVC 利用MOVX实现片外数据存储器数据传送 2000H 2100H MOVDPTR 2000HMOVXA DPTRMOVDPTR 2100HMOVX DPTR A DPTR 2000H DPTR 2100H A X 2100H X x 片外数据存储器不能直接寻址 下列为非法指令 MOVXA 2000H MOVX2100H 2000H 利用Ri间址来实现将 2000H 2100H MOVP2 20H 高位地址MOVR0 00 低位地址MOVXA R0 读片外RAMMOVP2 21H 改变高位地址MOVX R0 A 写片外RAM 利用MOVC指令实现查表功能注 只能从程序存储器读取数据到A累加器 只能使用变址间接寻址方式 1 DPTR为基址寄存器MOVCA A DPTR A A DPTR 查表范围为64KB程序存储器任意空间 2 PC为基址寄存器MOVCA A PC A A PC 常数表只能在查表指令后256B范围内 例查表法求Y X2 设X 0 X 15 在片内RAM20H单元 要求将查表求Y 存入片内RAM21H单元 1 用DPTR作基址寄存器ORG0100HSQU MOVDPTR TAB 确定表首地址MOVA 20H 取XMOVCA A DPTR 查表求Y X2MOV21H A 保存YRET 子程序结束 其它程序段 ORG0200H 常数表格首地址TAB DB00 01 04 09 225 平方表 指令地址源程序ORG0100H 程序起始地址0100HSQU MOVA 20H 取X0102HADDA 3 修正偏移量0104HMOVCA A PC 查表求Y X20105HMOV21H A 存结果0107HRET 子程序结束0108HTAB DB00 01 04 平方表010BHDB09 225 思考题 当0 X 255时 如何用查表法编程求Y X2 2 用PC作基址寄存器 3 交换指令实现片内RAM区的数据双向传送1 字节交换指令XCHA Rn A RnXCHA Ri A Ri XCHA dir A dir 2 半字节交换指令XCHDA Ri A0 3 Ri 0 3SWAPA A4 7 A0 3 4 堆栈操作指令入栈指令 PUSHdir SP SP 1 SP dir 出栈指令 POPdir dir SP SP SP 1 1 以A为目的操作数的算术 逻辑运算指令 24条 3 2 2算术运算和逻辑运算指令 2 以dir为目的操作数逻辑运算指令 6条 与ANL或ORL异或XRL 3 加1 减1指令 4 十进制调整指令DAA 仅对存于A中的加法结果进行十进制调整 若需完成十进制减法运算 则应变减法运算为补码的加法运算即可 其减数X的补码通过 99 X 1再DAA后得到 原则 和低4位大于9或有半进位 则低4位加6和高4位大于9或有进位 则高4位加6 例 DATA DATA 1 DATA 2 Y X Y X 100 有效位为2位十进制 模为100 Y 99 X 1 5 乘 除法指令 MULAB A B BA DIVAB A B 商在A中 余数在B中 6 专对A的指令 CPLA CLRA 0 A MOVA 99HDAACLRCADDA DATASUBBA DATA 1DAAADDA 1MOVDATA 2 A RRA RLA RLCA RRCA 移位指令 仅对A 1 调用程序和返回类指令1 长调用LCALLaddr16 addr16 PC0 15指令功能同80X86中的CALL 调用范围64KB全部空间 指令的机器码为三字节 2 短调用ACALLaddr11 addr11 PC0 10指令的功能同前 主要区别为 addr11 PC0 10 而PC11 15保持原值不变 故其调用范围为2KB 即子程序入口距当前PC不得超过2KB地址范围 本指令的机器码为二字节 3 2 3控制转移类指令 3 子程序返回指令 从栈顶弹出断点到PC RET 从调用子程序返回 RETI 从中断服务程序返回并恢复中断优先级状态触发器 2 转移指令1 无条件转移指令 1 短转移AJMPaddr11 addr11 PC0 10转移范围 2KB机器码为2字节 2 长转移LJMPaddr16 addr16 PC0 15转移范围 64KB机器码为3字节 3 间接转移JMP A DPTR A DPTR PC分析下列程序段 说出当A分别为0和2时 程序转置何处 该程序段的功能是什么 MOVDPTR TABLEJMP A DPTRTABLE AJMPPROC0AJMPPROC1AJMPPROC2AJMPPROC3 4 无条件相对转移SJMPrel PC rel PC 即As 2 rel PC 机器码为2字节As为源地址 本指令的首地址 执行本指令时当前PC As 2 rel为转移的偏移量 转移可以向前转 目的地址小于源地址 也可以向后转 目的地址大于源地址 因此偏移量rel是1字节有符号数 用补码表示 128 127 所以指令转移范围在离源地址As的 126 129字节之间 2 条件转移指令 1 累加器为零 非零 转移JZ JNZrel A 0 A 0 则转移 否则顺序执行程序 2 减1不等于零转移DJNZRn dir rel功能为 Rn dir 1 Rn dir 相减结果 0转 否则顺序执行程序 3 比较转移指令CJNEA dir relCJNEA data relCJNERn data relCJNE Ri data rel 操作数1不等于操作数2则转 否则顺序执行 1 MOVDATA 2 0FFHMOVA DATACJNEA DATA 1 NEXTNEXT JCNEXT1MOVDATA 2 1NEXT1 RET 1 位传送指令MOVC bit bit CYMOVbit C CY bit2 位状态控制指令CLRC 0 CYCLRbit 0 bitSETBC 1 CYSETBbit 1 bitCPLC CY CYCPLbit bit bit 3 2 4位操作指令 4 位转移位转移根据位的值决定转移 均为相对转移指令 JCrel CY 1 则转移 否则顺序执行程序JNCrel CY 0 则转移 否则顺序执行程序JBbit rel bit 1 则转移 否则顺序执行程序JNBbit rel bit 0 则转移 否则顺序执行程序JBCbit rel bit 1 则转移 且该位清零 否则顺序执行程序 1 定义 汇编控制指令 没有指令代码 不能被CPU执行 只用于汇编过程 为汇编程序提供汇编信息 2 常用伪指令 1 ORGORG是设置起始地址伪指令 其格式是 ORG16位地址或标号 2 ENDEND是结束汇编伪指令 其格式是 END 3 DBDB是定义字节伪指令 其格式是 标号 DB字节型数表 4 DWDW是定义字伪指令 其格式是 标号 DW字型数表 3 3伪指令 5 DSDS是定义存储空间伪指令 其格式是 标号 DS表达式 6 EQUEQU是赋值伪指令 其格式是 字符名称EQU数据或汇编符号 7 DATADATA是数据地址赋值伪指令 其格式是 字符名称DATA表达式 8 BITBIT是位地址赋值伪指令 其格式是 字符名称BIT位地址详见表3 3MCS 51中的伪指令 进制间的转换 1 十进制 二进制 整数 任何十进制数 有 dn 1 10n 1 dn 2 10n 2 d1 101 d0 100 dn 1 10 dn 2 10 d1 10 d0 规律 di 10 di 1 i 1 2 n 1 按二进制运算规则运算则得二进制数 3 4程序设计举例 例 将 位十进制数D3D2D1D0转换成二进制数 设 位十进制数D3D2D1D0按分离BCD码形式存放 要求结果的高位存放在R3中 结果的低位存放在R2中 方法 D3D2D1D0 0 10 D3 10 D2 10 D1 10 D0结果 16位二进制数 流程 MOVA R2MOVB 0AHMULABMOVR2 AMOVA BXCHA R3MOVB 0AHMULABADDA R3MOVR3 ARET MUL10 结果单元乘10子程序 由于4位10进制 9999 小于16位2进制 65535 所以转换结果不会大于16位 MOVR0 DATAMOVR7 03HMOVA R0MOVR2 AMOVR3 0ACALLMUL10INCR0MOVA R0ADDA R2MOVR2 A MOVA R3ADDCA 0MOVR3 ADJNZR7 BCDB1RET BCDB BCDB1 2 十进制 二进制 小数 10进制乘2取整 取溢出 例 0 625 2 1 2 3 0 10100000B a 小数点位数由乘2次数定 结果单元字节数也由此定 b 第一次的整数权最高 2 1 c 乘2是10进制的乘2 自身相加再DAA调整 D b 1 2 1 b 2 2 2 b m 2 m 例 设入口时10进制数在A中 要求结果放在R2中 8位二进制小数 BCDBP MOVR2 0MOVR6 8BCDBP1 ADDA ACCDAAXCHA R2RLCAXCHA R2DJNZR6 BCDBP1RET 结果单元清0 次数初始 10 2 将整数移入结果单元 溢出在进位位中 3 二进制 十进制 整数 按权展开 以8位为例 b7b6b5b4

温馨提示

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

评论

0/150

提交评论