51单片机汇编指令集(附记忆方法).doc

上传人:11****ws 文档编号:2289341 上传时间:2019-05-05 格式:DOC 页数:7 大小:134.06KB
下载 相关 举报
51单片机汇编指令集(附记忆方法).doc_第1页
第1页 / 共7页
51单片机汇编指令集(附记忆方法).doc_第2页
第2页 / 共7页
51单片机汇编指令集(附记忆方法).doc_第3页
第3页 / 共7页
51单片机汇编指令集(附记忆方法).doc_第4页
第4页 / 共7页
51单片机汇编指令集(附记忆方法).doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、- 0 -51单片机汇编指令集一、数据传送类指令(7 种助记符)MOV(英文为 Move):对内部数据寄存器 RAM和特殊功能寄存器 SFR的数据进行传送;MOVC(Move Code)读取程序存储器数据表格的数据传送;MOVX (Move External RAM) 对外部 RAM的数据传送;XCH (Exchange) 字节交换;XCHD (Exchange low-order Digit) 低半字节交换;PUSH (Push onto Stack) 入栈;POP (Pop from Stack) 出栈;二、算术运算类指令(8 种助记符)ADD(Addition) 加法;ADDC(Add

2、with Carry) 带进位加法;SUBB(Subtract with Borrow) 带借位减法;DA(Decimal Adjust) 十进制调整;INC(Increment) 加 1;DEC(Decrement) 减 1;MUL(Multiplication、Multiply) 乘法;DIV(Division、Divide) 除法;三、逻辑运算类指令(10 种助记符)ANL(AND Logic) 逻辑与;ORL(OR Logic) 逻辑或;XRL(Exclusive-OR Logic) 逻辑异或;CLR(Clear) 清零;CPL(Complement) 取反;RL(Rotate lef

3、t) 循环左移;RLC(Rotate Left throught the Carry flag) 带进位循环左移;RR(Rotate Right) 循环右移;RRC (Rotate Right throught the Carry flag) 带进位循环右移;SWAP (Swap) 低 4位与高 4位交换;四、控制转移类指令(17 种助记符)ACALL(Absolute subroutine Call)子程序绝对调用;LCALL(Long subroutine Call)子程序长调用;RET(Return from subroutine)子程序返回;RETI(Return from Inter

4、ruption)中断返回;SJMP(Short Jump)短转移;AJMP(Absolute Jump)绝对转移;LJMP(Long Jump)长转移;CJNE (Compare Jump if Not Equal)比较不相等则转移;- 1 -DJNZ (Decrement Jump if Not Zero)减后不为则转移;JZ (Jump if Zero)结果为则转移;JNZ (Jump if Not Zero) 结果不为则转移;JC (Jump if the Carry flag is set)有进位则转移;JNC (Jump if Not Carry)无进位则转移;JB (Jump if

5、 the Bit is set)位为则转移;JNB (Jump if the Bit is Not set) 位为则转移;JBC(Jump if the Bit is set and Clear the bit) 位为则转移,并清除该位;NOP (No Operation) 空操作;五、位操作指令(1 种助记符)CLR 位清零;SETB(Set Bit) 位 置 。8种常用伪指令ORG 16 位地址 ;此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址。标号: DB 字节数据项表;将项表中的字节数据存放到从标号开始的连续字节单元中。例如:SEG: DB 88H,100

6、, “7”, “C”标号:DW 双字节数据项表;定义 16位地址表,16 地址按低位地址存低位字节,高位地址存高位字节。例如:TAB: DW 1234H,7BH名字 EQU 表达式 或名字=表达式;用与给一个表达式赋值或给字符串起名字。之后名字可用做程序地址,数据地址或立即数地址使用。名字必须是一字母开头的字母数字串。例如:COUNT=10 或 SPACE EQU 10H名字 DATA 直接字节地址;给 8位内部 RAM单元起个名字,名字必须是一字母开头的字母数字串。同一单元可起多个名字。例如:ERROR DATA 80H名字 XDATA 直接字节地址;给 8位外部 RAM起个名字,名字规定同

7、 DATA伪指令。例如:IO_PORT XDATA 0CF04H名字 BIT 位指令;给一可位寻址的位单元起个名字,规定同 DATA伪指令。例如:SWT BIT 30H标号: ;指出源程序到此结束,汇编对其后的程序语句不予理睬。源程序只在主程序最后使用一个。- 2 -指 令 集(111 条)助 记 符 说明 字节 周期 代 码1.数据传送指令(30 条)MOV A,Rn 寄存器送 A 1 1 E8-EFMOV A,data 直接字节送 A 2 1 E5MOV A,Ri 间接 RAM 送 A 1 1 E6-E7MOV A,#data 立接数送 A 2 1 74MOV Rn,A A 送寄存器 1

8、1 F8-FFMOV Rn,data 直接数送寄存器 2 2 A8-AFMOV Rn,#data 立即数送寄存器 2 1 78-7FMOV data,A A 送直接字节 2 1 F5MOV data,Rn 寄存器送直接字节 2 1 888FMOV data,data 直接字节送直接字节 3 2 85MOV data,Ri 间接 Rn 送直接字节 2 2 86;87MOV data,#data 立即数送直接字节 3 2 75MOV Ri,A A 送间接 Rn 1 2 F6;F7MOV Ri,data 直接字节送间接 Rn 1 1 A6;A7MOV Ri,#data 立即数送间接 Rn 2 2 7

9、6;77MOV DPTR,#data16 16 位常数送数据指针 3 1 90MOV C,bit 直接位送进位位 2 1 A2MOV bit,C 进位位送直接位 2 2 92MOVC A,A+DPTR A+DPTR 寻址程序存贮字节送 A 3 2 93MOVC A,A+PC A+PC 寻址程序存贮字节送 A 1 2 83MOVX A,Ri 外部数据送 A(8 位地址) 1 2 E2;E3MOVX A,DPTR 外部数据送 A(16 位地址) 1 2 E0MOVX Ri,A A 送外部数据(8 位地址) 1 2 F2;F3MOVX DPTR,A A 送外部数据(16 位地址) 1 2 F0PUS

10、H data 直接字节进栈道,SP 加 1 2 2 C0POP data 直接字节出栈,SP 减 1 2 2 D0XCH A,Rn 寄存器与 A 交换 1 1 C8CFXCH A,data 直接字节与 A 交换 2 1 C5XCH A,Ri 间接 Rn 与 A 交换 1 1 C6;C7XCHD A,Ri 间接 Rn 与 A 低半字节交换 1 1 D6;D72.逻辑运算指令(35 条)ANL A,Rn 寄存器与到 A 1 1 585FANL A,data 直接字节与到 A 2 1 55ANL A,Ri 间接 RAM与到 A 1 1 56;57ANL A,#data 立即数与到 A 2 1 54A

11、NL data,A A与到直接字节 2 1 52ANL data,#data 立即数与到直接字节 3 2 53- 3 -ANL C,bit 直接位与到进位位 2 2 82ANL C,/bit 直接位的反码与到进位位 2 2 B0ORL A,Rn 寄存器或到 A 1 1 484FORL A,data 直接字节或到 A 2 1 45ORL A,Ri 间接 RAM或到 A 1 1 46;47ORL A,#data 立即数或到 A 2 1 44ORL data,A A或到直接字节 2 1 42ORL data,#data 立即数或到直接字节 3 2 43ORL C,bit 直接位或到进位位 2 2 7

12、2ORL C,/bit 直接位的反码或到进位位 2 2 A0XRL A,Rn 寄存器异或到 A 1 1 686FXRL A,data 直接字节异或到 A 2 1 65XRL A,Ri 间接 RAM异或到 A 1 1 66;67XRL A,#data 立即数异或到 A 2 1 64XRL data,A A异或到直接字节 2 1 62XRL data,#data 立即数异或到直接字节 3 2 63SETB C 进位位置 1 1 1 D3SETB bit 直接位置 1 2 1 D2CLR A A清 0 1 1 E4CLR C 进位位清 0 1 1 C3CLR bit 直接位清 0 2 1 C2CPL

13、 A A求反码 1 1 F4CPL C 进位位取反 1 1 B3CPL bit 直接位取反 2 1 B2RL A A循环左移一位 1 1 23RLC A A 带进位左移一位 1 1 33RR A A右移一位 1 1 03RRC A A 带进位右移一位 1 1 13SWAP A A 半字节交换 1 1 C43.算术运算指令(24 条)ADD A,Rn 寄存器加到 A 1 1 282FADD A,data 直接字节加到 A 2 1 25ADD A,Ri 间接 RAM 加到 A 1 1 26;27ADD A,#data 立即数加到 A 2 1 24ADDC A,Rn 寄存器带进位加到 A 1 1 3

14、83FADDC A,data 直接字节带进位加到 A 2 1 35ADDC A,Ri 间接 RAM 带进位加到 A 1 1 36;37ADDC A,#data 立即数带进位加到 A 2 1 34SUBB A,Rn 从 A 中减去寄存器和进位 1 1 989FSUBB A,data 从 A 中减去直接字节和进位 2 1 95SUBB A,Ri 从 A 中减去间接 RAM 和进位 1 1 96;97SUBB A,#data 从 A 中减去立即数和进位 2 1 94INC A A加 1 1 1 04- 4 -INC Rn 寄存器加 1 1 1 080FINC data 直接字节加 1 2 1 05I

15、NC Ri 间接 RAM 加 1 1 1 06;07INC DPTR 数据指针加 1 1 2 A3DEC A A减 1 1 1 14DEC Rn 寄存器减 1 1 1 181FDEC data 直接字节减 1 2 1 15DEC Ri 间接 RAM 减 1 1 1 16;17MUL AB A乘 B 1 4 A4DIV AB A被 B除 1 4 84DA A A十进制调整 1 1 D44.转移指令(22 条)AJMP addr 11 绝对转移 2 2 *1LJMP addr 16 长转移 3 2 02SJMP rel 短转移 2 2 80JMP A+DPTR 相对于 DPTR 间接转移 1 2

16、73JZ rel 若 A0 则转移 2 2 60JNZ rel 若 A0 则转移 2 2 70JC rel 若 C1 则转移 2 2 40JNC rel 若 C1 则转移 2 2 50JB bit,rel 若直接位1 则转移 3 2 20JNB bit,rel 若直接位0 则转移 3 2 30JBC bit,rel 若直接位1 则转移且清除 3 2 10CJNE A,data,rel 直接数与 A 比较,不等转移 3 2 B5CJNE A,#data,rel 立即数与 A 比较,不等转移 3 2 B4CJNE Ri,#data,rel 立即数与间接 RAM比较,不等转移3 2 B6;B7CJN

17、E Rn,#data,rel 立即数与寄存器比较不等转移 3 2 B8BFDJNZ Rn,rel 寄存器减 1 不为 0 转移 2 2 D8DFDJNZ data,rel 直接字节减 1 不为 0 转移 3 2 D5ACALL addr 11 绝对子程序调用 2 2 *1LCALL addr 16 子程序调用 3 2 12RET 子程序调用返回 1 2 22RETI 中断程序调用返回 1 2 32NOP 空操作 1 1 00六记忆方法MCS51 使用汇编语言指令,它共有 44 个操作码助记符, 33 种功能, 其操作数有data 、direct、Rn、Ri 等。这里先介绍指令助记符及其相关符号

18、的记忆方法。 一、助记符号的记忆方法 1表格列举法 - 5 -把 44 个指令助记符按功能分为五类,每类列表记忆。此处从略,请读者自己总结。 2英文还原法 单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉 语有助于理解其助记符含义,从而加强记忆。例如: 增量 INCIncremect 减量 DNCDecrement 短转移 SJMPShort jump 长转移 LJMPLong jump 比较转移 CJNECompare jump not equality 绝对转移 AJMPAbsolute jump 空操作 NOPNo operation 交换 XCHExchang

19、e 加法 ADDAddition 乘法 MULMultiplication 除法 DIVDivision 左环移 RLRotate left 进位左环移 RLCRotate left carry 右环移 RRRotate right 进位右环移 RRCRotate right carry 3功能模块记忆法 单片机的 44 个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原 则为 23 组。这样,化整为零,各个击破,实现快速记忆。 1)数据传送组。 2)加减运算组 MOV 内部数据传送 ADD 加法 MOVC 程序存储器传送 ADDC 带进位加法 MOVX 外部数据传送 SUBB

20、带进位减法 3)逻辑运算组。 4)子程序调用组。 ANL 逻辑与 LCALL 长调用 ORL 逻辑或 ALALL 绝对调用 XRL 逻辑异或 RET 子程序返回 二、指令的记忆方法 1指令操作数的有关符号 MCS51 的寻址方式共有六种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变 址寻址、相对寻址。我们必须掌握其表示的方法。 1)立即数与直接地址。ata 表示八位立即数,data16 表示是十六位立即数,data 或 direct 表示直接地址。 2)Rn(n=07)、A、B 、CY、DPTR 寄存器寻址变量。 3)R0 、R1、DPTR、SP 表示寄存器间址变量。 4)DPTRA、 P

21、CA 表示变址寻址的变量。 5)PC rel(相对量)表示相对寻址变量。 记住指令的助记符,掌握不同寻址方式的指令操作数的表示方法,为我们记忆汇编指 令打下了基础。MCS51 指令虽多,但按功能可分为五类, 其中数据传送类 28 条,算术运算类 24 条,逻辑操作类 25 条,控制转移类 17 条,布尔位操作 类 17 条。在每类指令里,根据其功能,抓住其源、 目的操作数的不同组合,再辅之以下方法,是完全能记住的。 我们约定,可能的目的操作数按(data/direct/A/Rn/Ri)顺序表示。 对于 MOV 指令,其目的操作数按 A、Rn、direct 、Ri 的顺序书写,则可以记住 MOV

22、的 15 - 6 -条指令。例如以累加器 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 组成的送数组指令,可以用图 1、2 帮助记忆。 由助记符 CJNE 形成的四条指令,也可以用图示法表示,如

23、图 3。 CJNE A,data,rel CJNE A,direct ,rel CJNE Rn,data,rel CJNE Ri,data,rel 另外,对于由(ANL、ORL 、 ARL)形成的 18 条逻辑操作指令,有关 A 的四条环移指令,也可以用图示法表示,请读者自行画出记忆。 3相似功能归类法 在 MCS51 指令中,我们发现部分指令其操作码不同,但功能相似,而操作数则完全一 样。相似功能归类法就是把具有这样特点的指令放在一起记忆, 只要记住其中的一条,其余的也就记住了。如加、减法的十二条指令,与、或、非的十八 条指令,现列举如下。 ADD/ADDC/SUBB A,data/dire

24、ct/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 AB A 除以 B,商(存于)A 余(下)B。 上面介绍了几种快速记忆单片机指令的方法,希望能起到抛砖引玉的作用,相信读者 在学习单片机的过程中能找到适合自己的方法来记忆。 但是,有了好的方法还不够,还需要实践,即多读书上的例题和别人编写的程序,自己再 结合实际编写一些程序。只有这样, 才能更好更快地掌握单片机指令系统。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。