Lecture05指令.ppt

  1. 1、本文档共101页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Lecture05指令

4.1 指令概述 指令(Instruction): 指示CPU执行某种规定操作的命令 指令集或指令系统(Instruction Set): 某一种CPU所能执行的全部指令的集合 → 定义程序员能使硬件完成的基本操作 MCS-51系列单片机汇编语言的指令格式 4.2 寻址方式 4.3~4.7 MCS-51系列单片机的指令系统 4.3 数据传送类 4.3 数据传送类 4.4 算术运算类 1、加法运算 1、加法运算 1、加法运算 1、加法运算 1、加法运算 1、加法运算 加法溢出 加法指令对PSW标志位的影响 例4.3 将内部RAM中M1,M2,M3三个单元中的无符号数相加,和存入R0(高位)和R1(低位)寄存器 MOV R2, #00H ;将0存入R2 MOV A, M1 ;取出第一个加数 ADD A, M2 ;(M1)+(M2)-A MOV R1, A ;低位和暂存于R1 MOV A, R2 ;对A清零 ADDC A, R2 ;0+0+Cy -A MOV R0, A ;高位和存R0 MOV A, R1 ;取出低位和,准备第二次相加 ADD A, M3 ;(M1)+(M2)+(M3)-A MOV R1, A ;存和的低8位 MOV A, R0 ;取出上一次的高位和,准备加高8位 ADDC A, R2 ;得到和的高8位 MOV R0, A ;存和的低8位 例4.4 两个无符号16位数,分别存放在从M1和M2开始的数据区中,低8位先存,高8位在后。写出两个16位数的加法程序,和存入R3(高8位)和R4(低8位)。设和不超过16位 MOV R0, #M1 ;第一个加数首地址送R0 MOV R1, #M2 ;第一个加数首地址送R1 MOV A, @R0 ;取第一个加数低8位 ADD A, @R1 ;低8位相加 MOV R4, A ;存和的低8位 INC R0 ;修改地址 INC R1 ;修改地址 MOV A, @R0 ;取第一个加数高8位 ADDC A, @R1 ;高8位相加 MOV R3, A ;存和的高8位 2、减法运算 2、减法运算 2、减法运算 2、减法运算 2、减法运算 减法溢出 减法指令对PSW标志位的影响 3、乘法运算 3、乘法运算 4、除法运算 例4.6 被乘数为16位无符号数,乘数为8位无符号数,编制相应的乘法程序。被乘数的地址为M1和M1+1(低8位先存),乘数地址为M2,积存入R2, R3, R4三个寄存器。 MOV R0, #M1 ;被乘数地址存R0 MOV A, @R0 ;取16位被乘数低8位 MOV B, M2 ;取乘数,B - (M2) MUL AB ;(M1)x (M2) MOV R4, A ;积的低8位 MOV R3, B ;暂存 INC R0 ;指向16位被乘数高8位 MOV A, @R0 ;取被乘数高8位 MOV B, M2 ;取乘数 MUL AB ;(M1+1)x (M2) ADD A, R3 ;得到积的第二个字节 MOV R3, A ;存入R3 MOV A, B ; ADDC A, #00H ;得到积的第三个字节 MOV R2, A ;存入R2 5、BCD码调整指令 加法 5、BCD码调整指令 加法 5、BCD码调整指令 减法 做十进制减法运算时,按需要做“减6调整” 5、BCD码调整指令 MCS-51系统内没有十进制减法调整指令 —— 可用加减数的补数进行 1)求减数的补数(9AH – 减数); 2)被减数与减数的补数相加 3)经十进制加法调整后得到所求的十进制减法运算结果 4.5 逻辑运算与移位类 例4.8 将累加器A的低4位送到P1口的低4位,而P1口的高4位保持不变。 MOV R0, A ;A内容暂存R0 ANL A, #0FH ;屏蔽A的高4位 ANL P1, #0F0H ;屏蔽P1口的低4位 ORL P1, A ;完成所需操作 MOV A, R0 ;恢复A的内容 例4.10 十六位数的算术左移。16位数在内存中存放在M1和M1+1单元内,低8位先存。 CLR C ;进位Cy = 0 MOV R1, #M1 ;操作数地址送R1 MOV A, @R1 ;低8位送A RLC A ;低8位左移,最低位添0,Cy ← A7 MOV @R1, A ;送回 INC R1 ;指向高8位 MOV A, @R1 ;高8位送A RLC A ;A7移入,高8位左移 MOV @R1, A ;送回 例4.11 在M1和M1+1单元有两个BCD数,现要将它们合并放在M1单

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档