版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章
51单片机的指令系统本章内容4.1寻址方式(重点)4.2基本指令
(重点)前言(1)明白机器码、汇编指令、高级语言的区别和联系(2)0101的代码叫机器码、在汇编语言叫指令、高级语言叫语句。(3)由于单片机目前大量存在汇编语言开发的程序,因此必须认真掌握单片机的汇编语言,既是找工作需要,也是考试重点之一。(4)天下所有汇编语言都包括操作码和操作数,其中操作码是必须的,操作数是可选的,正如英语单词中的:go(5)dir、#data、#data16等表达,是因为在程序注释中为了少写字,用这些缩写替代“片内RAM和SFR的8位直接地址”、“8位立即数”、“16位立即数”等表达。如果用户不嫌烦,也可以不用dir、#data、#data16等表达,直接书写汉字。故dir、#data、#data16等表达只可能出现在程序注释中。4.1寻址方式(1)为什么需要寻址方式?(2)判断何种寻址方式必须切记:谁是被操作对象(3)不同寻址方式,产生的机器码的字节数和执行的机器周期个数不一样。(4)寻址方式和计算机的数据组织以及存储器结构密切相关。4.1.1立即寻址(#data)(1)指令中直接给出操作数的寻址方式:MOVA,#33H;#33H→A
(2)在该指令中,MOV指令的机器码是74H。整个指令的机器码是:7433H。必须注意,MOV指令不同的寻址方式,机器码不一样。(3)立即数寻址速度最快,因为立即数不需要去内存去寻找,指令直接把被操作对象给出了。4.1.2直接寻址在指令中直接给出操作数所在的地址:MOVA,33H;(33H)→A
被操作对象不是33H,而是33H里面的内容:12H4.1.3寄存器寻址(1)操作数(被操作对象)存放在寄存器中(2)能作为寄存器寻址的只有:A,B,DPTR,R0~R7,其中:B仅在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。A可以寄存器寻址又可以直接寻址,直接寻址时写作ACC
MOVA,B;B→A,该指令中,目的操作数A是寄存器寻址,源操作数B的寻址方式是直接寻址方式4.1.4寄存器间接寻址(1)以寄存器内容为地址,该地址中存放的内容才是被操作对象(2)可以访问内部RAM和外部RAM。内部RAM空间为128B,必须要寄存器R0或R1提供内部RAM的地址;而外部RAM空间为64KB,需由P2端口提供高8位地址,R0或R1提供低8位地址,或DPTR提供16位间接地址,如:MOVA,@R0;(R0)→A
MOVXA,@DPTR;(DPTR)→A4.1.5变址寻址(1)以DPTR或PC作为基地址寄存器,累加器A作为变址寄存器,将基地址寄存器的内容和变址寄存器的内容相加形成地址,被操作对象存放于该地址中。
(2)变址寻址只用于访问程序存储器,只有2条指令:MOVCA,@A+DPTR及MOVCA,@A+PC
4.1.6相对寻址(1)将程序计数器PC的当前值与指令第二字节给出的相对偏移量(rel)相加,从而形成转移的目标地址。
(2)该指令只用于跳转,故只能访问ROM。
(3)例如:1000HSJMP30H由于SJMP指令为2字节指令,所以在执行这条指令时,当前的PC值为1000H+2H=1002H,而相对偏移量rel=30H,所以,本指令转移的目的地址=1002H+30H=1032H
4.1.7位寻址(1)对片内RAM中20H~2FH中的128个位地址及SFR中的可位寻址的位地址寻址。
(2)位寻址类似于直接寻址,都是指令给出直接地址,不同之处在于位寻址只给出该位的地址,而非字节地址。
(3)例如:SETB07H;或写成SETB20H.74.2基本指令-传送类(1)在汇编语言中,MOV指令应用最多。(2)务必分清楚MOV/MOVX/MOVC的应用场合。(3)MOV可以有各种寻址方式;MOVX只能是间接寻址;MOVC只能是变址寻址。(4)MOVX访问片外RAM,故可读写,因此总共有4条;MOVC访问ROM(片内、片外ROM),只读,故只有2条。4.2基本指令-传送类(5)PUSH/POP指令的理解非常重要:在执行PUSH指令时,先将SP值加1,然后将要压栈的数据向SP所指向的内部RAM单元传送。也即:指针先动,把空间腾出来,然后把数据压进去。在执行POP指令时,先将要弹出堆栈的数据向SP所指向的内部RAM单元传送,数据弹出后将SP值减1。也即:数据先弹出来,然后指针再向下移动。
4.2基本指令-字节交换类字节交换类指令,请参见教材4.2.2。
4.2基本指令-算术、逻辑运算(1)所有双字节算术运算指令,必须A为目的操作数,源操作数为片内任意形式。(2)对双字节逻辑运算指令而言,要么A为目的操作数,源操作数为片内任意形式;要么dir为目的操作数,此时#data或A必须为源操作数。这就是A叫做累加器的原因,因为单片机只有加法的硬件机构(不存在减法、乘法等硬件,如果需要减法等运算,必须在CPU里面自己转换成加法运算),且A是该机构的核心部件,故算术运算和逻辑运算大多数必须A参与。A不参与双字节逻辑运算的唯一例外情况是:AND/ORL/XRL
DIR,#DATA(3)请注意,DEC没有DPTR形式。
4.2基本指令-算术、逻辑运算(4)十进制调整指令理解非常重要:
十进制调整指令的目的是,当用户想用十进制的形式进行运算,然后计算机中的一切数均是以二进制(十六进制)的形式存在的,为了让CPU明白现在是十进制运算,故必须在运算紧接着的下一条指令采用DAA指令告诉CPU,用户是十进制而不是二进制运算。比如:
7+9=16,可是计算机却认为是7H+9H=10H,如果在7+9运算后面立即跟一个DAA指令,那么CPU就知道7+9=16,而不是10H。(5)十进制调整指令的具体调整过程是在CPU碰到DAA指令后,由CPU内部自动完成的,不需要用户干预,故用户对内部自动完成的机理理解即可。(6)单片机只有DAA一条调整指令,且只能是加法。如果需要减法调整,那么用户必须编程将该减法运算变化为加法运算。(7)其他算术、逻辑运算指令请参考教材4.2.4.4.2基本指令-算术、逻辑运算(8)算术运算和逻辑运算指令对标志位的影响
:1)对A操作指令(包括传送指令)都将A中“1”个数的奇偶反映到PSW的P标志位上。即A中奇数个“1”,P=1;偶数个“1”,P=0。因此MOV指令会影响P(只可能影响P),但不可能影响C/OV等。2)加1、减1指令、逻辑运算指令不影响CY、OV、AC标志位(本身是有进位、借位的)。
3)加、减运算指令影响标志位,乘除指令使Cy=0,当乘积大于255,或除数为0时,OV置1。4)对进位位CY(指令中用C表示)进行操作的指令和大环移指令,显然会影响CY。4.2基本指令-控制转移类(1)控制转移类指令,一定是与程序的运行方向有关。通常情况下程序是从上到下一条一条指令顺序执行的,有时候如果用户不想让程序按照这个顺序执行,此时就会用到控制、转移类指令。(2)由于程序执行的下一条语句的首地址放在PC中,通常情况下程序是从上到下一条一条指令顺序执行的,此时PC的内容是自动增加(注意不一定是加1)的,不需要人工干预。也即,如果人工干预了PC里面的值,那么程序无法从上到下一条一条指令顺序执行了。(3)控制类指令,在汇编里面叫子程序调用,类似C里面的函数;转移类指令在汇编里面叫跳转,类似C语言里面的goto。(4)无条件的转移指令,可以长跳,也可以短条;有条件转移指令,只能短跳。各个语句的具体描述,请参见教材4.2.54.2课题:嵌入式打标机所用指令创建链表1,逐行检查绘图命令;检测第1行绘图命令为PU,将A点坐标存入链表1;检查第2行绘
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理沟通中的非语言技巧
- 护理专业知识更新与前沿动态
- 护理员护理服务危机管理与应对
- 压力管理对高血压的影响
- 基于物联网的智能搬运机器人系统设计思路
- 基础护理试题及答案
- 1.1.1税收的性质《税法》(第八版)习题及答案
- 旅游行业监事职责面试指南
- 零售业人力资源部面试技巧
- 东辽经济开发区汽车(暨新能源装备)产业园建设项目水土保持方案报告表
- 2025年四川省高考化学试卷真题(含答案解析)
- 2025年广东省初中学业水平考试语文试卷(含答案详解)
- 2025年湖南省长沙市中考语文真题(解析版)
- 真空压力浸渍工艺-洞察及研究
- T/CAS 850-2024燃气用滚压螺纹热镀锌钢管技术规范
- 企业自行监测指南培训
- 2025中考英语作文复习:12个写作话题写作指导+满分范文
- 零基预算研究分析
- 郑州大学高层次人才考核工作实施办法
- 土壤氡浓度检测方案
- DBJT13-366-2021 建筑工程附着式升降脚手架应用技术标准
评论
0/150
提交评论