




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
指令格式如下 标号 操作码 目的操作数 源操作数 注释 标号加在指令之前 标号必须以字母开始 后跟1 8个字母或数字 并以 结尾 注意 不能用指令助记符 伪指令或寄存器名来作标号 标号代表指令第一个字节所存放的存储单元的地址 是用英文缩写的指令功能助记符 寻址方式 立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 1 MOV指令实现数在片内RAM单元之间 寄存器之间 寄存器与RAM单元之间的传送 MOV 目的操作数单元 源操作数 或单元 访问片内RAM的一般传送指令表如表3 1所示 课本51页 MOVA R1 将工作寄存器R1中的值送入A R1中的值保持不变 MOVA 30H 将30H单元中的值送入A 30H单元中的值保持不变 MOVA R1 如执行命令前R1中的值为30H 则是将30H单元中的值送入A中 MOVA 34H 将立即数34H送入A中 执行完本条指令后 A中的值是34H 以累加器为目的操作数指令为例 例 分析程序的执行结果 设 30H 50H 试分析执行下面程序后各有关单元的内容 程序执行结果是 A 30H R0 60H R1 30H 60H 50H 40H 50H 30H 50H内容未变 MOV60H 30H 立即数30H送60H单元 60H 30HMOVR0 60H 立即数60H送入R0 R0 60HMOVA R0 60H单元内容送入A A 30HMOVR1 A A中的内容送入R1 R1 30HMOV40H R1 30H中的内容送40H单元 40H 50HMOV60H 30H 30H单元的内容送入60H 60H 50H 例 设内部RAM 30H 40H 40H 10H 10H 00H P1 0CAH 分析以下程序执行后各单元及寄存器 P2口的内容 执行上述指令后的结果为 R0 30H R1 A 40H B 10H 40H P1 P2 0CAH 10H 20H MOVR0 30H R0 30HMOVA R0 A 40HMOVR1 A R1 40HMOVB R1 B 10HMOV R1 P1 40H 0CAHMOVP2 P1 P2 P1 0CAHMOV10H 20H 10H 20H 指令助记符操作功能注释MOVXA DPTR A DPTR MOVXA Ri A Ri i 0或1MOVX DPTR A DPTR A MOVX Ri A Ri A i 0或1 2 累加器与外部数据存储器数据传送指令 对片外扩展的数据存储器RAM或I O口进行数据传送 必须采用寄存器间接寻址的方法 通过累加器A来完成 这类指令共有以下 条单字节指令 指令操作码助记符都为MOVX 例 若外部数据空间存储单元地址是2097H 访问该单元 将其内容读入A P52页 方法1 MOVDPTR 2097HMOVXA DPTR 方法2 MOVP2 20H 将高8位地址 P2MOVR0 97H 低8位地址 R0MOVXA R0 指定的外部RAM内容 A 例 设外部RAM 1203H 1FH 分析以下指令执行后的结果 MOVDPTR 1203H DPTR 1203HMOVXA DPTR A DPTR MOV30H A 30H A MOVA 0FH A 0FHMOVX DPTR A DPTR A 执行结果为 DPTR 1203H 30H 1FH 1203H A 0FH 例 把片内6AH单元中的数取出 传送到外部数据存储单元3000H单元中去 MOVX DPTR A MOVA 6AH MOVDPTR 3000H 3 程序存储器内容送累加器 MOVC MoveCode 读取程序存储器数据表格的数据传送 第一条指令的基址寄存器为DPTR 因此其寻址范围为整个程序存储器的64K空间 表格可以放在程序存储器的任何位置 指令助记符操作功能注释机器码 H MOVCA A DPTR A A DPTR 93MOVCA A PC PC PC 1 A A PC 83 第二条指令的基址寄存器为PC 该指令中访问程序存储器的地址为 A 十 PC 其中 PC 为程序计数器的当前内容 即查表指令的地址加1 因此 当基址寄存器为PC时 查表范围实际为查表指令后256个字节的地址空间 例 在程序存储器中 数据表格为 7010H 02H7011H 04H7012H 06H7013H 08H执行程序 1004H MOVA 10H A10H1006H MOVDPTR 7000H DPTR 7000H 1009H MOVCA A DPTR 10H 7000H 结果 A 02H 例 有一个数在A中 要求用查表的方法确定它的平方值 此数的取值范围是0 6 ORG0000HMOVA 02HMOVDPTR TABLEMOVCA A DPTRSTOP SJMPSTOPORG0030HTABLE DB0 1 4 9 16 25 36END 指令助记符操作功能注释MOVCA A DPTR A A DPTR MOVCA A PC PC PC 1 A A PC 注意 第二条指令编程时还需要进行偏移量的计算 即MOVCA A PC指令所在地址与表格存放首地址间的距离量计算 并需要一条加法指令ADD进行地址调整 偏移量 表首地址 MOVC指令所在地址 1 例 在外部ROM中 从2000H单元开始依次存放0 9的平方值 要求根据累加器A中的值 0 9 编程来实现查找所对应的平方值 方法1 MOVDPTR 2000H MOVA 09H MOVCA A DPTR 方法2 设MOVC指令所在地址 PC 1FF0H 则偏移量 2000H 1FF0H 1 0FH MOVA 09H ADDA 0FH MOVCA A PC P141页动态显示程序设计 4 堆栈操作指令 堆栈操作有进栈和出栈 即压入和弹出数据 常用于保存或恢复现场 SP SP 1 direct SP PUSHdirect POPdirect SP direct SP SP 1 PUSH指令的功能是首先将堆栈指针SP加1 然后把直接地址指出的内容传送到堆栈指针SP寻址的内部RAM单元中 POP指令的功能是把堆栈指针SP寻址的内部RAM单元内容送入直接地址指出的字节单元中 堆栈指针SP减1 例 已知片内RAM50H单元中存放数值为1AH 设堆栈指针为30H 把此数值压入堆栈 然后再弹出到40H单元 由此可见40H单元内装入数值1AH SP为30H 例题 见课本54页 例3 4 例3 5 例3 6 例3 4设 SP 60H ACC 30H B 70H 执行下述指令 PUSHACCPUSHB 例3 5设 SP 62H 62H 70H 61H 30H 执行下述指令 POPDPHPOPDPL 结果 61H 30H 62H 70H SP 62H 结果 DPTR 7030H SP 60H MOVR0 SPMOVA R0ORLA 38HMOV R0 APOPPSW 例3 6 5 字节交换指令 将累加器A的内容和源操作数内容互换 XCH Exchange 例如 设 A 80H R7 08H 执行指令XCHA R7 则结果为 A 08H R7 80H 2 算术运算类指令 1 加法指令 ADD Addition 加法的执行结果将影响程序状态标志寄存器PSW的进位位C 溢出位OV 辅助进位位AC和奇偶校验位P 例 P57页例3 8 助记符 机器码 ADDA Rn 00101rrrADDA direct 00100101直接地址ADDA Ri 0010011iADDA data 00100100立即数 例3 8设 A 85H R0 20H 20H 0AFH 执行指令 ADDA R010000101 10101111 1 00110100结果 A 34H CY 1 AC 1 OV 1 P 1 2 带进位的加法指令 AddwithCarry 例 P57页例3 9 注意 带进位加法指令主要用于多字节的加法运算 例3 9设 A 85H 20H 0FFH CY 1 执行指令 ADDCA 20H1000010111111111 1 1 10000101结果 和 A 85H CY 1 AC 1 OV 0 P 1 例 试编写1234H 1FE7H的程序 将和的高8位 存入41H单元 低8位存入40H单元 解 两个16位数相加可分两步进行 第一步先对低8位相加 第二步再对高8位相加 考虑到第一步相加时可能产生进位 因而第二步必须用带进位加法指令 MOVA 34HADDA 0E7HMOV40H AMOVA 12HADDCA 1FHMOV41H A 3 增量指令INC Increment INCA 00000100INCRn 00001rrrINCdirect 00000101INC Ri 0000011iINCDPTR 10100011这组增量指令的功能是把所指出的变量加1 若原来为0FFH 将溢出为00H 不影响任何标志 例题 课本58页例3 10 直接地址 助记符 机器码 例3 10设 A 0FFH R3 0FH 30H 0F0H R0 40H 40H 00H 执行指令 INCA A 1 AINCR3 R3 1 R3INC30H 30H 1 30HINC R0 R0 1 R0 结果 A 00H R3 10H 30H 0F1H 40H 01H PSW状态不改变 4 十进制调整指令DA DecimalAdjust DAA 这条指令是在进行BCD码加法运算时 跟在ADD和ADDC指令之后 用于对BCD码的加法运算结果自动进行修正 使其仍为BCD码表达形式 该指令的执行过程如图3 2所示 P59页 例 累加器A中BCD数是5 立即数为8 执行加法指令 ADDA 8 在CPU中是按二进制加法进行的 其结果如下 0000100000001101 00000101 所得值为非法BCD码 但若将其结果加6调整后 就得到正确的结果 操作如下 00001101 00010011 得BCD码13 结果正确 00000110 参考程序如下 MOVA 65HADDA 58HDAA 例 编程实现BCD码65 58相加 5 带进位减法指令SUBB SubtractwithBorrow 思考题 怎样进行不带借位位的减法操作 需先清借位位 即置CY 0CLRC 注意 带进位减法指令主要用于多字节的减法运算 例 试编写341FH 12E7H的程序 将结果的高8位 存入41H单元 低8位存入40H单元 MOVA 1FHCLRCSUBBA 0E7HMOV40H AMOVA 34HSUBBA 12HMOV41H A 6 减1指令 DEC Decrement 例 课本59例3 12 减1指令的功能是将指定单元的内容减1 结果再放回到该单元中去 这类指令不影响标志位 例3 12设 A 0FH R7 19H 30H 00H R1 40H 40H 0FFH 执行指令 DECA A 1 ADECR7 R7 1 R7DEC30H 30H 1 30HDEC R1 R1 1 R1 结果 A 0EH R7 18H 30H 0FFH 40H 0FEH P 1不影响其它标志 7 乘法指令 MUL Multiplication 助记符机器码MULAB10100100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 温差电器件制造工岗位操作技能考核试卷及答案
- 缩放排工异常处理考核试卷及答案
- 建筑方案设计平面布局图
- 游艇制作厂家施工方案
- 市政承台降水施工方案
- 校园防性侵安全教育方案
- 装修微信营销策划方案
- 罗平新年装修活动方案策划
- 建筑方案设计任务和内容
- 移动人工智能营销方案
- “七一”党课:从《党章》中汲取奋进力量把全面从严治党进行到底
- 游戏室工作室合同范本
- 抖音达人签约合同范本
- T/CCMA 0172-2023移动式升降工作平台施工现场管理规程
- 粮食代烘干协议书
- 铁路交跨协议书
- 2025年网络安全基础知识考试试题及答案
- 医疗卫生行业从业人员资格及工作经历证明(6篇)
- 航拍无人机转让协议合同
- 应急预案鲁西化工集团股份有限公司煤化工二分公司突发环境事件应急预案
- 电影院转让协议合同
评论
0/150
提交评论