信盈达—您身边的嵌入式&人工智能专家
全国免费咨询热线:400-8788-909
您现在的位置在: 首页> 技术文章>

时间:2019-03-30 00:00:00 来源:信盈达 作者:信盈达

随着微电子技术和超大规模集成电路技术的发展,单片微型计算机以其体积小、性价比高、功能强、可靠性高等独有的特点,在各个领域(如工业控制、家电产品、汽车电子、通信、智能仪器仪表)得到了广泛的应用。学习、使用单片机的人越来越多,而生产单片机的厂家很多,单片机种类繁杂,不知如何选择。据统计,八位单片机占全球单片机销量的65%。在八位单片机中,Intel公司的8051单片机内核已成为8位单片机事实上的标准。因此,对初学者而言,选择8051单片机来学习不失为明智的选择。
   学习单片机,除了搞清单片机内部功能、存储空间分配及I/O接口外,还应掌握其指令系统。MCS51共有111条指令,现介绍我们总结出的快速记忆MCS51指令的方法,供大家参考。
   大家都知道,汇编语言指令由操作码、操作数两部分组成。MCS51使用汇编语言指令,它共有44个操作码助记符,33种功能,其操作数有#datadirectRn@Ri等。这里先介绍指令助记符及其相关符号的记忆方法。
   
一、助记符号的记忆方法
   1表格列举法
   把44个指令助记符按功能分为五类,每类列表记忆。此处从略,请读者自己总结。

   
2英文还原法
   单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆。例如:
增量 INCIncremect  减量 DNCDecrement
短转移 SJMPShort jump  长转移 LJMPLong jump
比较转移 CJNECompare jump not equality
绝对转移 AJMPAbsolute jump 空操作 NOPNo operation
交换 XCHExchange    加法 ADDAddition
乘法 MULMultiplication  除法 DIVDivision
左环移 RLRotate left  进位左环移 RLCRotate
                    left carry
右环移 RRRotate right  进位右环移RRCRotate
                    right carry
   
3功能模块记忆法
   单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为23组。这样,化整为零,各个击破,实现快速记忆。
   1)数据传送组。      2)加减运算组
    MOV 内部数据传送     ADD 加法
    MOVC 程序存储器传送   ADDC 带进位加法
    MOVX 外部数据传送    SUBB 带进位减法
   3)逻辑运算组。      4)子程序调用组。
    ANL 逻辑与        LCALL 长调用
    ORL 逻辑或        ALALL 绝对调用
    XRL 逻辑异或       RET 子程序返回

   
二、指令的记忆方法
   1指令操作数的有关符号
   MCS51的寻址方式共有六种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变址寻址、相对寻址。我们必须掌握其表示的方法。
   1)立即数与直接地址。
  ata表示八位立即数,#data16表示是十六位立即数,datadirect表示直接地址。
   2Rn(n=07)ABCYDPTR寄存器寻址变量。
   3@R0@R1@DPTRSP表示寄存器间址变量。
   4DPTRAPCA表示变址寻址的变量。
   5PCrel(相对量)表示相对寻址变量。
   记住指令的助记符,掌握不同寻址方式的指令操作数的表示方法,为我们记忆汇编指令打下了基础。MCS51指令虽多,但按功能可分为五类,其中数据传送类28条,算术运算类24条,逻辑操作类25条,控制转移类17条,布尔位操作类17条。在每类指令里,根据其功能,抓住其源、目的操作数的不同组合,再辅之以下方法,是完全能记住的。我们约定,可能的目的操作数按(#data/direct/A/Rn/@Ri)顺序表示。
   对于MOV指令,其目的操作数按ARndirect@Ri的顺序书写,则可以记住MOV15条指令。例如以累加器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指令图示记忆法
   图示记忆法是把操作功能相同或相似、但其操作数不同的指令,用图形和箭头将目的、源操作数的关系表示出来的一种记忆方法。例如:由助记符MOVMOVXMOVC组成的送数组指令,可以用图12帮助记忆。
   由助记符CJNE形成的四条指令,也可以用图示法表示,如图3
CJNE A
,#datarel   CJNE Adirectrel
CJNE @Rn
,#datarelCJNE @Ri,#datarel
   另外,对于由(ANLORLARL)形成的18条逻辑操作指令,有关A的四条环移指令,也可以用图示法表示,请读者自行画出记忆。
   
3相似功能归类法
   在MCS51指令中,我们发现部分指令其操作码不同,但功能相似,而操作数则完全一样。相似功能归类法就是把具有这样特点的指令放在一起记忆,只要记住其中的一条,其余的也就记住了。如加、减法的十二条指令,与、或、非的十八条指令,现列举如下:
   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 directPOP direct这两条指令。初学者常常分不清堆栈SP的变化情况,为此编成这样一句话:(SP的内容)1(direct的内容)再入栈,(SP的内容)弹出(direct单元)SP才减1。又如乘法指令中积的存放,除法指令中被除数和除数以及商的存放,都可以编成口诀记忆如下。
   MUL AB  高位积(存于)B,低位积(存于)A
   DIV AB  A除以B,商(存于)A()B
   上面介绍了几种快速记忆单片机指令的方法,希望能起到抛砖引玉的作用,相信读者在学习单片机的过程中能找到适合自己的方法来记忆。但是,有了好的方法还不够,还需要实践,即多读书上的例题和别人编写的程序,自己再结合实际编写一些程序。只有这样,才能更好更快地掌握单片机指令系统。