51单片机指令快速记忆方法总结
国INTEL公司生产的一系列单片机 的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品。
学习单片机,除了搞清单片机内部功能、存储空间分配及I/O接口外,还应掌握其指令系统。MCS-51共有111条指令,现介绍我们总结出的快速记忆MCS-51指令的方法,供大家参考。
大家都知道,汇编语言指令由操作码、操作数两部分组成。MCS-51使用汇编语言指令,它共有44个操作码助记符,33种功能,其操作数有#data、direct、Rn、@Ri等。这里先介绍指令助记符及其相关符号的记忆方法。
一、助记符号的记忆方法
1 表格列举法 把44个指令助记符按功能分为五类,每类列表记忆。此处从略,请读者自己总结。
2 英文还原法 单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆。
例如:
增量 INC-Incremect
减量 DNC-Decrement
短转移 SJMP-Short jump
长转移 LJMP-Long jump
比较转移 CJNE-Compare jump not equality
绝对转移 AJMP-Absolute jump
空操作 NOP-No operati on
交换 XCH-Exchange
加法 ADD-Addition
乘法 MUL-Multiplication
除法 DIV-Division
左环移 RL-Rotate left
进位左环移 RLC-Rotate left carry
右环移 RR-Rotate right
进位右环移RRC-Rotate right carry
3 功能模块记忆法
单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原 则为2~3组。这样,化整为零,各个击破,实现快速记忆。
1)数据传送组
2)加减运算组:“MOV 内部数据传送ADD 加法MOVC 程序存储器传送ADDC 带进位加法MOVX 外部数据传送SUBB 带进位减法
3)逻辑运算组
4)子程序调用组:
ANL 逻辑与
LCALL 长调用
ORL 逻辑或
ALALL 绝对调用
XRL 逻辑异或
RET 子程序返回
二、指令的记忆方法
1 指令操作数的有关符号
MCS-51的寻址方式共有六种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变 址寻址、相对寻址。我们必须掌握其表示的方法。
1)立即数与直接地址。ata表示八位立即数,#data16表示是十六位立即数,data或 direct表示直接地址。
2)Rn(n=0-7)、A、B、CY、DPTR寄存器寻址变量。
3)@R0、@R1、@DPTR、SP表示寄存器间址变量。
4)DPTR+A、PC+A表示变址寻址的变量。
5)PC+rel(相对量)表示相对寻址变量。
记住指令的助记符,掌握不同寻址方式的指令操作数的表示方法,为我们记忆汇编指 令打下了基础。MCS-51指令虽多,但按功能可分为五类, 其中数据传送类28条,算术运算类24条,逻辑操作类25条,控制转移类17条,布尔位操作 类17条。在每类指令里,根据其功能,抓住其源、 目的操作数的不同组合,再辅之以下方法,是完全能记住的。 我们约定,可能的目的操作数按(# data/direct/A/Rn/@Ri )顺序表示。
对于MOV指令,其目的操作数按A、Rn、direct、@Ri的顺序书写,则可以记住MOV的15 条指令。
例如以累加器A为目的操作数,可写出如下4条指令。
MOV A,# data/direct/A/Rn/@Ri以此类推,写出其它指令
MOV Rn,#data/direct/A
MOV direct,# data/direct/A/Rn/@Ri
MOV @Ri,#data/direct/A
2 指令图示记忆法
图示记忆法是把操作功能相同或相似、但其操作数不同的指令,用图形和箭头将目 的、源操作数的关系表示出来的一种记忆方法。 例如:由助记符MOV、MOVX、MOVC组成的送数组指令。
由助记符CJNE形成的四条指令,也可以用图示法表示。 CJNE A,#data,rel CJNE A,direct,rel CJNE @Rn,#data,rel CJNE @Ri,#data,rel
另外,对于由(ANL、ORL、ARL)形成的18条逻辑操作指令,有关A的四条环移指令, 也可以用图示法表示,请读者自行画出记忆。
3 相似功能归类法
在MCS-51指令中,我们发现部分指令其操作码不同,但功能相似,而操作数则完全一 样。相似功能归类法就是把具有这样特点的指令放在一起记忆, 只要记住其中的一条,其余的也就记住了。如加、减法的十二条指令,与、或、非的十八 条指令,现列举如下。
ADD/ADDC/SUBB A,# data/direct/Rn/@Ri
ANL/ORL/XRL A,# data/direct/Rn/@Ri
ANL/ORL/XRL direct,#data/a
上述每一排指令,功能相似,其操作数都相同。其它的如加1(INC)、减1(DEC)指令也 可照此办理。
4 口诀记忆法
对于有些指令,我们可以把相关的功能用精练的语言编成一句话来记忆。如PUSH direct和POP direct这两条指令。 初学者常常分不清堆栈SP的变化情况,为此编成这样一句话:(SP的内容)加1(direct的内 容)再入栈,(SP的内容)弹出(到direct单元)SP才减1。 又如乘法指令中积的存放,除法指令中被除数和除数以及商的存放,都可以编成口诀记忆如下:
MUL AB高位积(存于)B,低位积(存于)A。DIV ABA除以B,商(存于)A余(下)B。
上面介绍了几种快速记忆单片机指令的方法,希望能起到抛砖引玉的作用,相信读者在学习单片机的过程中能找到适合自己的方法来记忆。但是,有了好的方法还不够,还需要实践,即多读书上的例题和别人编写的程序,自己再结合实际编写一些程序。只有这样, 才能更好更快地掌握单片机指令系统。
建 议
学单片机之初,你必须懂一些数字电路 ,若对数字电路中的一般概念都很模糊,最好还是再补习一下再来学单片机。接下来你最好先选一种单片机机种进行学习,因为目前单片机机种较多,其结构和指令均不相同,若这种学两天,那种学两天往往会滩多嚼不烂。
这里建议你最好先学8051单片机,因为8051方面的书籍、资料、器材都较多。PIC和AVR以及其它类型的单片机虽有其长处,但现在的书籍、资料以及器件供应并不理想,不太适合初学者选择。若你对这些并不在意的话那选择后者进行学习也未尚不可。
我们建议你选择8051单片机开始学习的原因还在于8051家族的派生品很多,例如ATMEL公司的AT89C51系列单片机就是完全兼容MSC-51 8051系列的(也就是说,AT89C51的指令、管脚、内部主要结构,以及用法与MSC-51相同),他不但兼容,而且还有不少创新,比如他的程序存储器可以电擦、写,一片IC就拥有了过去单片机的最小系统,不需要以前所谓的373和EPROM元件 ;所以,实验时的电路连接、电路板自制都比较容易,加上目前其价格较底,你学习的片子也可以做产品,做产品的片子也可以做实验,当然AVR系列也有这些特点;而PIC及其它系列在这一点上则显得不太理想。
购买单片机的书籍最好是书的前面你能看懂,而书的后面你不懂,若前后都看不懂的书最好先别买,因为这本书短时间内不会对你起多大作用。当然若不是把书当资料查也不必买前后你都懂的书,因为它对你来说有点浅。应以原理书籍为主。其次可以购买一些应用方面的书籍以便参考。
电子 技术本身与实验离不开,若光靠看书是很难理解其原理和学会单片机开发的。你应该购置相关单片机的芯片 、编程器、实验板,以及开发他的相关软件。并以边看书边实验的方式进行学习其效果将明显好的多!由于初学,不可能购置很多昂贵的设备,建议学习用的单片机芯片其程序储存器是可以反复可擦写的,如AT89C系列或AVR系列。这样,在学习烧写时是无后顾之忧的。
现在来谈谈单片机开发的步骤。想让单片机按你的意思(想法)完成一项任务,必须先编写供其使用的程序,编写单片机的程序应使用该单片机可以识别的“语言”,否则你将是对“石”弹琴。目前较流行的有汇编和C语言;汇编语言可以精确的控制单片机工作的每一步,而C语言则注重结果,不必关心单片机具体的每一步。
习惯上宜先学汇编语言后学C语言,这样可以对单片机有一个更深的了解,再说,就是用C语言编程,在需要精确控制时还需要嵌入汇编语句。当然,也有一开始就用C语言的,后来再学汇编;若你学过计算机的 Turbo C ,开始就学单片机的C也许会更快一些。
单片机程序是用文本编辑器编写的纯文本文件,象我们平常在windows计事本中用汉语写计划一样,先这件事后那件事的去写,以所使用单片机语言的语法,按我们的想法把单片机要做的事“一件一件”的依次写下来,遇到“有些事”是重复的,就指明在什么什么地方已有说明(跳转),在正常安排中若有其它突发事件出现,必须写一段突发事件处理计划(中断)... ...。最后保存文件的扩展名应与所使用的语言要求的名字一致;我们汉语的文章一般保存为*.txt扩展名,而汇编语言的文件扩展名一般应为*.asm;有的开发系统则有自己的规定,如用 Keil C51开发系统,编写的汇编程序扩展名为*.a51;当然Keil C51开发系统也有自己的编辑器,不必用Windows中的记事本。
无论我们使用汇编语言,还是C语言编写的程序,只是给我们看的,这个程序还必须经过与该语言对应的软件将我们能看懂的汇编或C“翻译”(编译)成所用单片机可以识别的代码。将单片机可以识别的代码烧写(编程)到单片机程序存储器中,单片机装的实际电路中才能依你的“计划”去工作。
对于8051系列单片机来说,Keil C开发系统具有编辑、编译、模拟单片机C语言程序的功能,也能编辑、编译、模拟汇编语言程序;对于初学者,开始编写的程序难免出现语法错误或其它不规范的语句,由于Keil C编译时对错误语句提示的是英文,不太好理解,若用汇编的话,可使用DOS下的宏汇编编译器ASM51;他可以对出错语句进行中文提示;你源程序的注释部分还可以使用中文,这更便于你今后对程序的维护。
编译出的代码一般扩展名为*.hex或*.bin;这个代码文件必须送到单片机中单片机在电路中才能按你的“计划”去工作。将这个代码文件送到单片机中的工具就是编程器,与电脑连接的编程器一般都通过并口或者串口与编程器的硬件连接,也有相应的服务程序;在连接好电脑与编程后运行其服务程序,在服务程序中先选择所要编程的单片机型号,再调入前面所得到的代码文件,接下来就用编程器将这个代码文件烧写到单片机中。到此,单片机开发的一个过程就大致完成。
当然,你不可能一次就把你的“计划”用单片机的语言完美正确的将源程序写好(就是我们平常制订的计划在实际中也有修改的),这就需要反复修改源程序,反复编译、烧写到单片机中、反复将单片机装到电路中去实验。由于单片机执行每一条语句所用的时间很短,有时你无法得到其中间的结果,也无法判断程序出错的位置,这时你可以使用软件模拟的方法,让程序一步一步的执行,每执行一步,通过查看单片机中各关键数据的变化情况,来找到错误或没按你“计划”执行的语句,从而达到排错的目的。若你资金不成问题的话,也可以购买单片机仿真 器,他可以取代实际电路中的单片机,在电脑的控制下一步一步的去排错。实际上无论软件模拟(仿真)还是硬件仿真,其功能远不止这里讲的这一点点。
《单片机汇编考试宝典(第二版))》小知识点汇总一
配合《单片机汇编考试宝典(第二版))》视频教程学习
小知识点补充29:简述汇编语言中的标号有什么规定答:(1)标号由 1—8 字符组成,头一个字符必须是字母。(2)不能使用汇编语言已定义的符号。(3)标号后必须跟冒号:(4)同一标号在一个程序中只能定义一次。小知识点补充30:1,A/D 转换器转换数据的传送有几种方式答:(1)定时传送方式: A/D启动后,调用延时时间大于转换时间的延时程序后即可读取。(2)查询方式: A/D 启动后,查询 EOC(转换结束信号),转换一完成即可读取转换数据。(3)中断方式:将 EOC作为外中断请求信号,转换一结束,即引起中断,读取转换数据。2, MCS-51单片机系统 I/O 端口编址方式有哪几种?分别对其进行简要描述:答:I/O 端口编址两种方式:独立编址与统一编址。1)独立编址方式: I/O 寄存器地址空间和存储器地址空间分开编址,但需一套专门的读写 I/O 的指令和控制信号。2)统一编址方式: I/O 寄存器与数据存储器单元同等对待,统一编址。不需要专门的 I/O 指令,直接使用访问数据存储器的指令进行 I/O 操作,简单、方便且功能强。MCS-51使用统一编址的方式,每一接口芯片中的一个功能寄存器(端口)的地址就相当于一个 RAM单元。
小知识点补充47简述在使用普通按键的时候,为什么要进行去抖动处理,如何处理?答:键抖动会引起一次按键被误读多次。为了确保 CPU 对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按键的抖动,可用硬件或软件两种方法消除,一般使用软件消抖,延时20毫秒左右
1,8051单片机的定时器 T1用作计数方式时计数脉冲是由 T1(P3.5)输入2,8051 单片机的机器周期为1.5μs, 则其晶振频率 fosc为8MHz3,用 8051 的定时器,若用软启动,应使 TOMD中的GATE位置 04,MCS-51单片机在同一级别里除 INT0 外,级别最高的中断源是定时器 T05,用8051的定时器T0 定时,用模式 2,则应启动T0前向TH0、TL0置入相同的计数初值,以后不再置入6,MCS-51单片机定时器 T0的溢出标志 TF0,若计满数在 CPU响应中断后由硬件清零7,8051响应中断后,中断的一般处理过程是关中断,保护现场,开中断,中断服务,关中断,恢复现场,开中断,中断返回8,执行中断处理程序最后一句指令 RETI后程序返回到响应中断时一句的下一句9,MCS-51单片机响应中断矢量地址是中断服务程序的入口地址10,ADC 0809芯片是 m路模拟输入的 n 位 A/D转换器, m=8,n=811,当 DAC 0832 D/A转换器的 CS接 8031 的 P2.0 时,程序中 0832 的地址指针DPTR寄存器应置为:0832H或FE00H或FEF8H等12,8051的定时 /计数器 T0 的有几种工作模式,对各工作模式作简单的叙述:答: 定时/计数器 T0 的模式 : 0:13 位计数器;1:16 位计数器;2:8 位循环计数器;3:2 个独立的 8 位计数器 串行通信模式13,8051的串行通信的有几种工作模式,请对各工作模式作简单的叙述:答:串行通信共有 4 种工作模式 ,分别是:模式 0:同步移位寄存器;模式 1:波特率可变的8位两机异步通信;模式 2:波特率固定的9位可多机的异步通信;模式 3:波特率可变的9位可多机的异步通信
口线 第二功能信号 第二功能信号名称P3.0 RXD 串行数据接收P3.1 TXD 串行数据发送P3.2 INT0 外部中断 0 申请P3.3 INT1 外部中断 1 申请P3.4 T0 定时器 /计数器 0 P3.5 T1 定时器 /计数器 1 P3.6 WR 外部 RAM 写选通P3.7 RD 外部 RAM 读选通
***(伪指令)***ORG 指明程序的开始位置DB 定义数据表DW 定义16位的地址表EQU 给一个表达式或一个字符串起名DATA 给一个8位的内部RAM起名XDATA 给一个8位的外部RAM起名BIT 给一个可位寻址的位单元起名END 指出源程序到此为止
4,三极管有几种工作状态?答案:导通,饱和,截止
小知识点补充28:. 简述变址寻址方式并举例说明:答:(1)变址寻址是以 DPTR或 PC作基址寄存器,累加器 A作变址寄存器以两者内容相加形式的 16 位地址作为操作数地址。(2)变址寻址只能对移定存储器寻址,其指令只有三条: MOVC A,@A+DPTR MOVC A,@A+PC JMP @A+DPTR
小知识点补充26:MCS-51单片机系统中, 外接程序存储器和数据存储器公用 16 位地址线和 8 位数据线,为什么不会发生冲突?答:因为 MCS-51单片机访问外部程序存储器用的指令是 MOVC,控制线为 PSEN,而访问外部数据存储器时,使用的指令是 MOVX,有效的控制信号是 RD ,WR。所以不会发生冲突小知识点补充27:简述动态显示与静态显示的区别及优缺点答:静态显示 :就是当显示器显示某一个字符时, 相应的发光二极管恒定的导通或截止。这种显示方式每一位都需要有一个 8 位输出口控制, 亮度大,耗电也大。需要的 I/O 端口较多,如四个七段数码管需要 32 根口线,适用于显示位数较少的场合。但编程简单。**动态显示:**就是一位一位地轮流点亮显示器各个位(扫描) ,对于显示器的每一位来说,每隔一段时间点亮一次。 利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快, 字符才不闪烁。将各显示器的段码同名端边在一起,用一个 I/O 端口驱动;位码用另一个 I/O 端口分别控制。如四个七段数码管只需要 11 根口线。编程较复杂
1,两位十六进制数最多可以表示 256 个存储单元2,89C51是 ATMEL公司的产品3,MCS-51系列单片机,属于哈佛结构体系体系结构。 哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)4,在 89C51 中,一个机器周期包括 12 个振荡周期,而每条指令都由一个或几个机器周期组成,分别有单周期指令、双周期指令和4 周期指令5,在 89C51 中,有两种方式可使单片机退出空闲模式,方法一是: 任何的中断请求被响应,方法二是: 硬件复位,而只有 硬件复位 方式才能让进入掉电模式的单片机退出掉电模式6,串行通信中,为使设备同步工作,需要通信双方有两个共同的要求,一是: 通信双方必须采用统一的编码方式 ,二是: 通信双方必须能产生相同的传送速率 7,设 89C51 的晶振频率为 11.0592MHz,选用定时器 T 工作模式 2 作波特率发生器,波特率为2400b/s,且 SMOD 置 0,则定时器的初值为 F4H8,键盘可分为 独立连接 式和 行列(矩阵) 式两类9.键盘可分为 编码 式和 非编码 式两类10,LED 数码管有 静态 显示和 动态 显示两种方式
1,在变址寻址(基址寄存器+变址寄存器间接寻址)中,以累加器A作为变址寄存器,以DPTR或PC作为基址寄存器2,串行口扩展并行口时,串口工作在方式03,51单片机并行I/O口信息有读I/O口和读锁存器两种方式,读改写操作是针对并行口中的锁存器进行的4,在中断服务程序中,至少有一条中断返回指令5,定时器1有**三**种工作模式6,定时器0工作在方式3时,分为两个独立的8位计数器,且TH0占用T1的状态控制位TR1和TF1(此时T0不能作为外部计数模式)7,设 MCS-51单片机晶振频率为 12MHz,定时器作计数器使用时,其最高的输入计数频率为 500KHz8,主程序中调用子程序后返回主程序,堆栈指针 SP的值不变9,单片机中使用 MOVX A,@R1指令, C与 P2口配合能寻址数据存储器 1111H单元(前文有专门的例题讲解)10,下列指令判断若 P1 口最低位为高电平就转 L00P,否则就执行下一句的是JB P1.0 ,L00P11,MCS-51单片机在执行 MOVX A,@DPTR指令时,其寻址单元的地址是由P0口送低 8 位,P2口送高 8 位12,使累加器 A的最高位置 1 的是:ORL A,#80H13,使 R0的最高位置 0 的是:ANL R0,#7FH14,使 R1的最高位取反的是XRL R1,#80H15,MCS-51指令系统中,格式为: ORG 16位地址 的指令功能是用来定义汇编程序的起始地址16,指令 ANL A,R0的功能是:将 A与寄存器 R0的内部容按位逻辑与17,LJMP跳转空间最大可达到:64KB18,在编程中使用伪指令的目的是指示和引导汇编程序进行汇编19,8051单片机的定时器 T1用作定时方式时是由内部时钟频率定时,一个机器周期加120,8051单片机的定时器 T0用作计数方式时是由外部计数脉冲计数,下降沿加1
例题:MCS-51指令系统中,执行下列程序后,程序计数器 PC的内容为: ORG 000H MOV DPDR,#1000 MOV A , #00H MOV 20H ,A LJMP 1500 END答案:(PC)=1500
一,小问:1,输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。2,START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行,直到A/D转换完成。3,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。4,当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
三,小问: ORG 0000H AJMP START ORG 0050HSTART: MOV SP,#66H MOV R7,#05H MOV R6,#04H MOV R0,#30H MOV DPTR,#0FEF8HL0: ACALL ADC0809 MOV @R0,A INC R0 DJNZ R7,L0 MOV R7,#05H INC DPTR ;0FEF9H DJNZ R6,L0 SJMP $ ORG 006AHADC0809: CLR A MOVX @DPTR,A ;WR=0 MOV R5,#10DELAY: NOP NOP NOP DJNZ R5,DELAY SETB P3.3 ;IO读取,首先写个1 JB P3.3,$ MOVX A,@DPTR RET END
相关问答
51单片机 汇编程序的二进制、十进制、十六进制数怎么表明!-ZO...9条回答:【推荐答案】二进制10B十进制10或10D十六进制10H
单片机 编程运用“与”运算, 判断 某8位二进制数是奇数还是偶数...[最佳回答]51单片机可以不用与运算,只接判断,用P(奇偶校验位),如果非得用与运算只能这样:MOVA,#0FFHANLA,#DATA;某数)JNBP,REL51单片机可以不用与运算,只...
mcs— 51单片机 数据存储器RAM分布情况,说明片内和片外如何辨...是买来一片51单片机芯片时,里面自带的。片外RAM,需要另外再买几块RAM芯片,焊接到电路板上。单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模...
怎么 判断 笔记本电脑分配给 51单片机 的串口号?串口号只是电脑与串口设备连接后分配串口的,你可以在自己的电脑查看,你可以右击我的电脑,然后“管理”——硬件管理——通用串口,看一下是COM几,如果有几个...
51单片机 可以直接检测引脚电平吗?51单片机是可以直接检测引脚电平的,但必须选用具有adc(模数转换)功能的单片机。单片机内部的adc电路主要包括转换寄存器、模拟输入引脚和基准电压引脚,通过...
51单片机 中,8051,80C51和C8051分别是什么?80C51一般指普通的8051,就是我们常说的51,相比之下C8051是非常高端的一种51(这么说是因为不管怎么样,它还是51,没有贬义。。),价格也比较高,全兼容51,但...80...
51单片机 芯片怎么测好坏?1、视觉判断机械损坏;2、外用表测量电源及各个端口的对地电阻,具体阻值与好的芯片对比;3、烧录一个使用相关IO口的程序,在线测试,最好是做一块每个IO口都...
在MCS- 51单片机 中怎么用CJNE指令比较两数大小 - honeyjar 的...比如比较30H和31H寄存器中数据大小:MOVA,30HCJNEA,31H,NXT.......;两数相等NXT:JCSMALL.......;30H大于31HRETSMALL:........
51单片机 orl是什么意思?ORL能将某些位置一,对于想置一的位与行“或”逻辑,对于想保持原来的位与0进行“或”逻辑。单片机也被称为单片微控器,属于一种集成式电路芯片。在单片机中主...
汇编语言问题, 判断 符号数正负?汇编语言中判断符号数正负的方法是:1、确定数据类型,是有几个字节构成。2、判断最高位是1还是0,如果是1,那么该数为负,如果为0,那么该数为正。以51单片机...