单片机复习知识点总结
第三章
了解布尔处理机的硬件支持
布尔处理机是一种位处理机。专门用于位处理。
操作码必须有,操作数可有可无。
*****************一些易错知识:
PC : 存放下一条欲执行指令。自动加1,形成下一条指令地址;PC不能被MOV指令修改值。
SP:堆栈指针,管出栈和入栈的数据;
掌握MCS-51系列单片机指令中的常用符号的含义:#、direct、@、addr11、addr16、rel、bit、Rn、Ri、$
#:立即数前导符 ; #8000H表示立即数8000H
direct:8位直接地址;
@:间接寻址前导符 ;
addr11:11位目标地址;
addr16:16位目标地址;
rel:偏移量;
bit:位地址;
Rn:表示工作寄存器中R0-R7的任意一个寄存器;
Ri:i只能取0或1;
$:当前指令的地址;
掌握MCS-51系列单片机系统的七种寻址方式、每种寻址方式的表示形式及寻址空间
立即寻址:
直接给出操作数本身的寻址方式。
例如:
MOV DPTR,#3000H --------将立即数3000H写入DPTR中。
直接寻址:
直接给出操作数地址的寻址方式。
ps:访问SFR的唯一方式。操作码后面的一个字节是实际操作数地址。内部RAM的高128字节。
例如:
MOV ACC,60H ;
MOV 50H,65H;
MOV ACC,60H,#20H;
寄存器寻址:Rn
指出操作数所在的寄存器。相当于寄存器中放了操作数。
操作码的第三位表示的是R0-R7中的哪一个。
例如:
MOV A,B;
MOV A,#60H;
MOV B,80H;
寄存器间接寻址:Ri
指令指定的寄存器中存放的内容就是实际操作数的地址。相当于寄存器中放的是操作数的地址。
例如:
MOV A,@R1;
MOV @R0,#30H;
MOV @R0,30H;
PS:这里R只能取0或1哦。
基址变址寻址:
用DPTR或PC当成基址;用A当变址。存放8位无符号数。其中DPTR可拆成DPH,DPL两个寄存器使用,但是PC不行。
例如两条查表指令:
MOVC A,@A+DPTR;
MOVC A,@A+PC;
相对寻址:
在相对寻址指令执行时,加上偏移量rel。即 目标地址=rel+(PC);
例如:
假设指令 JNZ NEXT的地址为2000H,当前PC的值为2002H。标号NEXT的地址2040H。求JNZ NEXT的rel。
解:
2040H=2002H+rel
rel=3EH;
位寻址:
略。
掌握MCS-51系列单片机的指令系统(能读懂指令的功能、能写出指令的助记符、能判断指令的正误、能分析和写出程序段的执行结果。
数据传送指令:
![](/assets/blank.gif)
内部RAM和寄存器之间的数据传送:16 MOV
MOV :
//能够根据上表写出16条基本的MOV指令
外部RAM和累加器A之间的数据传送:4 MOVX
CPU与外部RAM或者扩展的IO之间进行数据交换时,必须使用MOVX指令,外部数据的传送与接收必须用过寄存器A,只能采用寄存器间接寻址。
MOVX A,@DPTR
MOVX A,Ri
MOVX Ri,A
MOVX @DPTR,A
例如:
MOV 30H,#44H;
MOV R1,#30H;
MOVX A,@R1;
MOV DPTR,#1234H;
MOV @DPTR,A;
求最后A和外部RAM中1234H的内容?
最后A=44H;(1234H)=44H;
程序存储器ROM和累加器A之间的数据传输:2 MOVC
MOVC A,@DPTR+A;
MOVC A,@PC+A;
数据交换指令:3
SWAP:
半字节交换指令。
MOV A,#78H;
SWAP A;
(A)=87H
XCHD:
低四位交换指令。
MOV R1,#55H;
MOV 55H,#23H;
MOV A,#67H;
XCHD A,@R1;
(A)=63H (R1)=27H
XCH:
全字节交换指令。
MOV R1,#55H;
MOV 55H,#23H;
MOV A,#67H;
XCH A,@R1;
(A)=67H (R1)=23H
堆栈指令:2
PUSH direct ;
POP direct;
ps:只能是直接寻址。同SFR。
对于PUSH:先移动指针+1,再放数据;
对于POP:先取出数据,再让指针-1;
PUSH,POP只能保护现场数据,不能保护断点。
例如:
MOV A,#12H;
PUSH ACC;
PUSH 30H,#50H;
POP 30H;
POP ACC;
(30H)=50H
(ACC)=12H
例如:
MOV A,#12H;
PUSH ACC;
PUSH 30H,#50H;
POP ACC;
POP 30H;
(30H)=12H
(ACC)=50H
练习:
在执行下列指令后,求A,R0,(60H);
MOV A,#45H
MOV R0,#60H
MOV @R0,A
XCH A,R0
----------------------
A=60H R0=45H (60H)=45H
设RAM中(2456H)=66H,(2457H)=34H,ROM中(2456H)=55H,(2457H)=64H.则(A),(DPTR)?
MOV A,#1
MOV DPTR,#2456H
MOVC A,@A+DPTR
----------------------
(A)=64H (DPTR)=2456H
//DPTR是一个存放地址的16位寄存器。
三条传送MOV、MOVX、MOVC的格式、功能及它们访问的存储器类型和地址空间,能熟悉使用两条查表指令MOVC指令进行查表:MOVC A,@A+PC和MOVC A,@A+DPTR,可参考P90例4.24中的方法一和方法二;
MOV : 内部RAM;
MOVX : 外部RAM;
MOVC : ROM。
1010H: 30H
1011H: 31H
1012H: 32H
1013H: 33H
1014H: 34H
执行子程序:
1000H: MOV A,#0DH // (A)=0DH
1002H: MOV A,@A+PC //(PC)=1003H,@(A+PC)=1010H,等于 MOV A,@1010H = MOV A,30H. (A)=30H
1003H: MOV RO,A // MOV R0,#30H
A,RO,PC的内容为多少?
A=30H,RO=30H,PC=1004H.
SWAP A,PUSH和POP指令的格式和功能及其操作数的寻址方式;
ADD、ADDC、DA A、SUBB、INC、DEC、MUL、DIV指令的格式和功能;
加法指令:
ADD : 不带进位的加指令。
ADDC:带进位的加指令。
格式:
ADD A,#data ADD A,direct ADD A,Rn ADD A,@Ri
ADDC A,#data ADDC A,direct ADDC A,Rn ADDC A,@Ri
减法指令:【没有不带借位的减法指令。】
SUBB:带借位的减法指令。
SUBB A,#data SUBB A,direct SUBB A,Rn SUBB A,@Ri
在执行SUBB之前,需要使用CLR C 对Cy清零。
十进制调整指令:
DA A
将A中的内容调整为合适的BCD码。
如果累加器A的低四位大于9或者(AC)=1 : (A)=(A)+06H;
如果累加器A的高四位大于9或者(Cy)=1 : (A)=(A)+ 60H;
MOV A,#33H
ADD A,#49H // (A)=33H+49H=7CH
MOV B,A // (B)=7CH
DA A // (A)=7CH+06H=82H
求(A),(B)?
----------------------------
(B)=7CH (A)=7CH+06H=82H
加一指令:
INC A
INC direct
INC Rn
INC @Ri
INC DPTR
INC不影响Cy,ADD/ADDC会影响Cy。
减一指令:
DEC A
DEC direct
DEC Rn
DEC @Ri
编程实现DPTR的减一操作。
思路:先对低四位减一,在对高四位减一。
CLR Cy
MOV A,DPL;//先送低四位进入中转站A
SUBB A,#01H;
MOV DPL,A;
MOV A,DPH;
SUBB A,#00H
MOV DPH,A
乘除指令:
MUL AB
DIV AB
MUL AB : A*B=BA;高八位放在B中,低八位放在A中。
DIV AB:A/B=A...B
ANL、ORL、XRL、RL、RR、RLC、RRC、CPL A、CLR A指令的格式和功能以及ANL、ORL、XRL的用途:对一个操作数中的部分位置1、清0、求反;
逻辑与指令:
ANL A,#data
ANL A,direct
ANL A,Rn
ANL A,@Ri
ANL direct,A
ANL direct,#data
作用:对某些位清零,另外一些不变。
例如:
ANL A,#01010101B
对A中1,3,5,7位清零。
逻辑或指令:
ORL A,#data
ORL A,direct
ORL A,Rn
ORL A,@Ri
ORL direct,A
ORL direct,#data
作用:对某些位置1,另外一些不变。
例如:
ORL A,#01010101B
对A中1,3,5,7位置1。
逻辑异或指令:
XRL A,#data
XRL A,direct
XRL A,Rn
XRL A,@Ri
XRL direct,A
XRL direct,#data
作用:对和1异或的取反,对和0异或的不变。
例如:
MOV A,#0111 1101B
XRL A,#0101 0101B
结果是:(A)=0010 1000B
循环移位指令:
RL : 不带Cy的循环左移指令。
RLC:带Cy的循环左移指令。
RR : 不带Cy的循环右移指令。
RRC:带Cy的循环右移指令。
左移一次相当于乘以2,右移一次相当于除以2。只能对累加器ACC做移位处理。
例如:
MOV A,#40H // 0100 0000
RL A // A=80H 1000 0000
RR A // A =20H 0010 0000
累加器清零与取反指令:
CLR A
CPL A
LJMP、AJMP、SJMP、JMP指令的格式、功能以及跳转范围;
无条件转移指令:4
长转移指令:3BYTE
LJMP addr16
ADDR0-15--->PC
短转移指令:
SJMP rel
PC=PC+rel;
SJMP $ //死循环
绝对转移指令:2BYTE
AJMP addr11
PC=PC+2;
PC0-10<-----addr11
要求转移后的指令地址与原地址高五位不变。
散转指令:
JMP @A+DPTR
(DPTR)+(A)----->PC
JZ/JNZ、CJNE、DJNZ、LCALL、ACALL、RET、RETI指令的格式、功能;
JZ:
JZ rel;
累加器判0转移。
若(A)=0,则PC=PC+rel。若(A)!=0,则顺序执行。
JNZ: not zero
JNZ rel;
累加器不判0转移。
若(A)!=0,则PC=PC+rel。若(A)=0,则顺序执行。
CJNE:
CJNE A,direct,rel
CJNE A,#data,rel
CJNE Rn,#data,rel
CJNE @Ri,#data,rel
比较转移指令。
若(A)=direct,则顺序执行。若(A)>direct,则(PC)=(PC)+rel,Cy=0;若(A)<direct,则(PC)=(PC)+rel,Cy=1.
DJNZ:
DJNZ Rn,rel
DJNZ direct,rel
减一不为0指令。
Rn=Rn-1,若此时Rn!=0,则PC=PC+rel,否则顺序执行。
子程序调用与返回指令:
ps:必须成对出现。
LCALL addr11
PC=PC+3
SP=SP+1 //低八位压栈
PC0-7---->SP
SP=SP+1 //高八位压栈
PC8-15---->SP
ADDR16---->PC0-15
ACALL addr16
PC=PC+2
SP=SP+1 //低八位压栈
PC0-7---->SP
SP=SP+1 //高八位压栈
PC8-15---->SP
ADDR16---->PC0-15
可在2KB的范围内调用子程序。
RET:
从堆栈中退出PC的高八位和低八位。将指针减去2,不影响任何标志。
先退高八位,再退低八位。
RETI: 中断返回
从堆栈中退出PC的高八位和低八位。将指针减去2,不影响任何标志。
先退高八位,再退低八位。
NOP:
空指令,占用1个机器周期。
位操作指令:MOV、SETB、CLR、CPL、JB、JNB指令的格式、功能。
MOV C,bit
MOV bit,C
***C指的是Cy。
CLR C C=0
CLR bit bit=0
SETB C C=1
SETB bit bit=1
开中断: CLR EA
关中断: STEB EA
JC rel
C=1,则PC=PC+rel.
JNC rel
C=0,则PC=PC+rel.
JB rel
bit=1,则PC=PC+rel.
JNB rel
bit=0,则PC=PC+rel.
JBC rel
C=1,则PC=PC+rel且C=0。
综合:能根据要求写汇编指令
例如:将片内RAM30H中的压缩的两位BCD码转换成二进制数送到片内RAM40H单元中。
已知:BCD转换二进制:10*A1+A0
ORG 0000H
AJMP START
---------以上是固定格式,背住即可-------------
ORG 40H
START: MOV A,30HSWAP AANL A,#0FHMOV B,#10MUL BAMOV B,AMOV 30HANL A,#0FHADD A,BMOV 40H,ASJMP $
/*可不可以这样写呢?想想*/
START: MOV A,30HANL A,#0F0HMOV B,#10MUL BAMOV B,AMOV 30HANL A,#0FHADD A,BMOV 40H,ASJMP $
求出内部RAM30H中数据含有1的个数,将结果送入32H。
ORG 0000H
AJMP START
START:CLR CMOV R2,#8MOV R1,#0MOV A,30H
LOOP: RCC AJNC NEXTINC R1
NEXT: DJNZ R2,LOOPMOV 32H,R1SJMP $
END
单片机复习知识点总结相关推荐
- 计算机软考知识点总结,历年计算机软考《系统分析师》复习知识点总结(8)
点击查看:历年计算机软考<系统分析师>复习知识点总结 1. 专业英语 Discipline n.学科,几率,训练,惩罚;vt.规范,定义,使有条理 Cottage n.小屋,村舍;农舍式小 ...
- 微型计算机dec al,微机原理复习知识点
复习知识点 第1章 1.8086是一种16位微处理器,80486是一种32位微处理器. 2.CPU由运算器和控制器组成.运算器的主要功能是算术运算与逻辑运算.运算器的逻辑部件为算 数逻辑单元. 3.A ...
- 计算机二级 java和web_2020年全国计算机二级WEB程序复习知识点:JavaBean
[摘要] 即将参加全国计算机等级考试的考生们,考试即将到来,大家的备考工作进行得如何了?考必过为大家精心整理了2020年全国计算机二级WEB程序复习知识点:JavaBean,希望能够助力全国计算机等级 ...
- 二级c语言需要知道的知识点,2020年全国计算机二级C语言复习知识点:C语言基本知识(...
[摘要] 即将参加全国计算机等级考试的考生们,考试即将到来,大家的备考工作进行得如何了?考必过为大家精心整理了2020年全国计算机二级C语言复习知识点:C语言基本知识(,希望能够助力全国计算机等级考试 ...
- 计算机二级ms office知识点讲解,全国计算机二级MSOffice复习知识点
计算机内部电路组成,可以高速准确地完成各种算术运算.当今计算机系统的运算速度已达到每秒万亿次,微机也可达每秒亿次以上,使大量复杂的科学计算问题得以解决.下面是小编整理的关于全国计算机二级MSOffic ...
- 七年级计算机考试知识点,七年级语文期中考试复习知识点整理
合理的总结,合理的归纳,对于考试成绩会有很大的帮助,下文为大家推荐了七年级语文期中考试复习知识点,祝大家期中考试顺利. .文章体裁 此文是一篇:诗歌.小说.散文(抒情散文.叙事散文).剧本.说明文.议 ...
- 数据库期末复习知识点:(仅供参考)
数据库期末复习知识点: 一运用SQL 基本sql语句 授权sql语句: 实体完整性sql语句: 二 ER 画出ER图,并转换成关系模式. 三.范式 范式 存储结构 一运用SQL 基本sql语句 (1) ...
- 计算机职称考试知识点,职称计算机考试复习知识点
职称计算机考试复习知识点 全国职称计算机考试可以提高计算机和网络的普及应用程度,加强"信息资源的开发和利用"的精神,落实国家加快信息化建设的要求,引导全国专业技术人员学习掌握计算机 ...
- 计算机二级mysql工具_2020年全国计算机二级MySQL复习知识点:优化工具
[摘要] 即将参加全国计算机等级考试的考生们,考试即将到来,大家的备考工作进行得如何了?考必过为大家精心整理了2020年全国计算机二级MySQL复习知识点:优化工具,希望能够助力全国计算机等级考试,相 ...
最新文章
- MYSQL忘记登录密码
- Cisco路由器的口令恢復
- Altium designer关于铺铜的操作
- 【CPP 小技巧 (一)FPS】统计处理一张图像算法消耗的时间 3 种方法
- HOW-TO:带有MySQL的JEE应用程序中具有集群功能的Quartz Scheduler
- 用 Python 和 werobot 框架开发公众号
- 【学习OpenCV4】滚动条Trackbar的创建与使用详解
- 第六章 Realm及相关对象——《跟我学Shiro》[张开涛]
- Flutter问题集锦——Android Studio 4.0.1 在AVD Manger中启动模拟器报“unable to locate abd”
- 导致Android手机崩溃的壁纸,一张壁纸导致安卓手机崩溃作者首发声:绝非故意...
- 年末去字节跳动面试,居然被面试官问的哑口无言,原因竟然是这个!!!
- 解决真机识别为虚拟机,Sorry, this application cannot be run under a Virtual Machine
- 计算机专业必读哪两本经典书籍?
- win10动态壁纸怎么设置_酷狗也能设置动态壁纸???
- sparklines_Sparklines入门200年来功能强大的数据可视化形式
- bit、Byte、bps、Bps、pps、Gbps的详细说明及换算
- Base58原理及代码
- Java项目:药店信息管理系统(java+SSM+JSP+layui+maven+mysql)——计算机毕业设计
- topcoder srm 390 div1
- 输出1到2000之间的双胞胎数。双胞胎数:两质数差为2称为双胞胎数。例如227和229是一对双胞胎数,它们都是素数且差为2。