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

合集下载

51单片机汇编指令详解

51单片机汇编指令详解

51单片机汇编指令详解mcs-51系列单片机指令目录:1、a2、x3、r4、s5、n6、o7、p8、m9、j10、l11、d12、i13、c一、以a结尾的指令存有18条,分别为:acalladdr11adda,rnadda,directadda,@riadda,#dataaddca,rnaddca,directaddca,@riaddca,#dataajmpaddr11anla,rnanla,directanla,@rianla,#dataanldirect,aanldirect,#dataanlc,bitanlc,/bit1、acalladdr11指令名称:绝对调用指令指令代码:{a10,a9,a8,10001},a[7:0]指令功能:结构目的地址,展开子程序调用。

其方法就是以指令提供更多的11十一位地址(al0~a0),替代pc的高11十一位,pc的高5十一位维持不变。

操作方式内容:pc←(pc)+2sp←(sp)+1(sp)←(pc)7~0sp←(sp)+1(sp)←(pc)15~8pc10~0←addrl0~0字节数:2机器周期:2采用表明:由于指令只得出子程序入口地址的高11十一位,因此调用范围就是2kb。

2、adda,rn指令名称:寄存器乘法指令指令代码:28h~2fh指令功能:累加器内容与寄存器内容相加操作内容:a←(a)+(rn),n=0~7字节数:1机器周期;1影响标志位:c,ac,ov3、adda,direct指令名称:轻易串行乘法指令指令代码:25h指令功能:累加器内容与内部ram单元或专用寄存器内容相加操作内容:a←(a)+(direct)字节数:2机器周期:1影响标志位:c,ac,ov4、adda,@ri指令名称:间接串行乘法指令指令代码:26h~27h指令功能:累加器内容与内部ram高128单元内容相乘操作方式内容:a←(a)+((ri)),i=0,1字节数:1机器周期:1影响标志位:c,ac,ov5、adda,#data指令名称:立即数加法指令指令代码:24h指令功能:累加器内容与立即数相乘操作方式内容:a←(a)+data字节数:2机器周期:1影响标志位:c,ac,ov6、addca,rn指令名称:寄存器带进位加法指令指令代码:38h~3fh指令功能:累加器内容、寄存器内容和位次位相乘操作方式内容:a←(a)+(rn)+(c),n =0~7字节数:1机器周期:1影响标志位:c,ac,ov7、addca,direct指令名称:直接寻址带进位加法指令指令代码:35h指令功能:累加器内容、内部ram高128单元或专用寄存器内容与位次位加操作内容:a←(a)+(direct)+(c)字节数:2机器周期:1影响标志位:c,ac,ov8、addca,@ri指令名称:间接串行拎位次乘法指令指令代码:36h~37h指令功能:累加器内容、内部ram低128单元内容及进位位相加操作方式内容:a←(a)+((ri))+(c),i=0,1字节数:1机器周期:1影响标志位:c,ac,ov9、addca,#data指令名称:立即数带位次乘法指令指令代码:34h指令功能:累加器内容、立即数及进位位相加操作内容:a←(a)+data+(c)字节数:2机器周期:1影响标志位:c,ac,ov10、ajmpaddr11指令名称:绝对迁移指令指令代码:{a10,a9,a8,00001},a[7:0]指令功能:构造目的地址,实现程序转移。

51单片机指令快速记忆法

51单片机指令快速记忆法

单片机系列指令快速记忆法随着微电子技术和超大规模集成电路技术地发展,单片微型计算机以其体积小、性价比高、功能强、可靠性高等独有地特点,在各个领域(如工业控制、家电产品、汽车电子、通信、智能仪器仪表)得到了广泛地应用.学习、使用单片机地人越来越多,而生产单片机地厂家很多,单片机种类繁杂,不知如何选择.据统计,八位单片机占全球单片机销量地%.在八位单片机中,公司地单片机内核已成为位单片机事实上地标准.因此,对初学者而言,选择单片机来学习不失为明智地选择.学习单片机,除了搞清单片机内部功能、存储空间分配及接口外,还应掌握其指令系统.-共有条指令,现介绍我们总结出地快速记忆-指令地方法,供大家参考.大家都知道,汇编语言指令由操作码、操作数两部分组成.-使用汇编语言指令,它共有个操作码助记符,种功能,其操作数有#、、、等.这里先介绍指令助记符及其相关符号地记忆方法.一、助记符号地记忆方法表格列举法把个指令助记符按功能分为五类,每类列表记忆.此处从略,请读者自己总结.英文还原法单片机地操作码助记符是该指令功能地英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆.例如:增量-减量-短转移-长转移-比较转移-绝对转移-空操作-交换-加法-乘法-除法-左环移-进位左环移-右环移-进位右环移-功能模块记忆法单片机地个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为~组.这样,化整为零,各个击破,实现快速记忆.)数据传送组. )加减运算组内部数据传送加法程序存储器传送带进位加法外部数据传送带进位减法)逻辑运算组. )子程序调用组.逻辑与长调用逻辑或绝对调用逻辑异或子程序返回二、指令地记忆方法指令操作数地有关符号-地寻址方式共有六种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变址寻址、相对寻址.我们必须掌握其表示地方法.)立即数与直接地址.表示八位立即数,#表示是十六位立即数,或表示直接地址.)(-)、、、、寄存器寻址变量.)、、、表示寄存器间址变量.)+、+表示变址寻址地变量.)+(相对量)表示相对寻址变量.记住指令地助记符,掌握不同寻址方式地指令操作数地表示方法,为我们记忆汇编指令打下了基础.-指令虽多,但按功能可分为五类,其中数据传送类条,算术运算类条,逻辑操作类条,控制转移类条,布尔位操作类条.在每类指令里,根据其功能,抓住其源、目地操作数地不同组合,再辅之以下方法,是完全能记住地.我们约定,可能地目地操作数按(#)顺序表示.对于指令,其目地操作数按、、、地顺序书写,则可以记住地条指令.例如以累加器为目地操作数,可写出如下条指令.,#以此类推,写出其它指令.,#,#,#指令图示记忆法图示记忆法是把操作功能相同或相似、但其操作数不同地指令,用图形和箭头将目地、源操作数地关系表示出来地一种记忆方法.例如:由助记符、、组成地送数组指令,可以用图、帮助记忆.由助记符形成地四条指令,也可以用图示法表示,如图.,#,,,,#,,#,另外,对于由(、、)形成地条逻辑操作指令,有关地四条环移指令,也可以用图示法表示,请读者自行画出记忆.相似功能归类法在-指令中,我们发现部分指令其操作码不同,但功能相似,而操作数则完全一样.相似功能归类法就是把具有这样特点地指令放在一起记忆,只要记住其中地一条,其余地也就记住了.如加、减法地十二条指令,与、或、非地十八条指令,现列举如下:,#,#,#上述每一排指令,功能相似,其操作数都相同.其它地如加()、减()指令也可照此办理.口诀记忆法对于有些指令,我们可以把相关地功能用精练地语言编成一句话来记忆.如和这两条指令.初学者常常分不清堆栈地变化情况,为此编成这样一句话:(地内容)加(地内容)再入栈,(地内容)弹出(到单元)才减.又如乘法指令中积地存放,除法指令中被除数和除数以及商地存放,都可以编成口诀记忆如下.高位积(存于),低位积(存于).除以,商(存于)余(下).上面介绍了几种快速记忆单片机指令地方法,希望能起到抛砖引玉地作用,相信读者在学习单片机地过程中能找到适合自己地方法来记忆.但是,有了好地方法还不够,还需要实践,即多读书上地例题和别人编写地程序,自己再结合实际编写一些程序.只有这样,才能更好更快地掌握单片机指令系统.。

51系列单片机指令快速记忆法

51系列单片机指令快速记忆法

学单片机之初,你必须懂一些数字电路,若对数字电路中的一般概念都很模糊,最好还是再补习一下再来学单片机。

接下来你最好先选一种单片机机种进行学习,因为目前单片机机种较多,其结构和指令均不相同,若这种学两天,那种学两天往往会滩多嚼不烂。

这里建议你最好先学8051单片机,因为8051方面的书籍、资料、器材都较多。

PIC和AVR以及其它类型的单片机虽有其长处,但现在的书籍、资料以及器件供应并不理想,不太适合初学者选择。

若你对这些并不在意的话那选择后者进行学习也未尚不可。

我们建议你选择8051单片机开始学习的原因还在于8051家族的派生品很多,例如ATMEL公司的AT89C51系列单片机就是完全兼容MSC-51 8051系列的(也就是说,AT89C51的指令、管脚、内部主要结构,以及用法与MSC-51相同),他不但兼容,而且还有不少创新,比如他的程序存储器可以电擦、写,一片IC就拥有了过去单片机的最小系统,不需要以前所谓的373和EPROM元件;所以,实验时的电路连接、电路板自制都比较容易,加上目前其价格较底,你学习的片子也可以做产品,做产品的片子也可以做实验,当然AVR系列也有这些特点;而PIC及其它系列在这一点上则显得不太理想。

购买单片机的书籍最好是书的前面你能看懂,而书的后面你不懂,若前后都看不懂的书最好先别买,因为这本书短时间内不会对你起多大作用。

当然若不是把书当资料查也不必买前后你都懂的书,因为它对你来说有点浅。

应以原理书籍为主。

其次可以购买一些应用方面的书籍以便参考。

电子技术本身与实验离不开,若光靠看书是很难理解其原理和学会单片机开发的。

你应该购置相关单片机的芯片、编程器、实验板,以及开发他的相关软件。

并以边看书边实验的方式进行学习其效果将明显好的多!由于初学,不可能购置很多昂贵的设备,建议学习用的单片机芯片其程序储存器是可以反复可擦写的,如AT89C系列或AVR系列。

这样,在学习烧写时是无后顾之忧的。

51单片机指令助记

51单片机指令助记
RET 子程序返回 1 24
RETI 中断返回 1 24
AJMP addr11 绝对短转移 2 24
LJMP addr16 长转移 3 24
SJMP rel 相对转移 2 24
JMP @A+DPTR 相对于DPTR的间接转移 1 24
控制转移指令共有17条,可分为“无条件转移指令” “有条件转移指令” “子程序调用指令” 及 “返回指令”。
5、布尔变量操作类指令
助记符 功能说明 字节数 振荡周期
CLR地址位 2 12
SETB C 置进位位 1 12
DEC Rn 寄存器减1 1 12
DEC direct 直接地址单元内容减1 2 12
DEC @Ri 间接RAM内容减1 1 12
MUL A,B A乘以B 1 48
DIV A,B A除以B 1 48
DA A 累加器进行十进制转换 1 12
RRC A 累加器带进位循环右移 1 12
SWAP A 累加器半字节交换 1 12
4、控制转移类指令
助记符 功能说明 字节数 振荡周期
ACALL addr11 绝对短调用子程序 2 24
LACLL addr16 长调用子程序 3 24
MOV direct,direct 直接地址单元中的数据送入直接地址单元 3 24
MOV direct,@Ri 间接RAM中的数据送入直接地址单元 2 24
MOV direct,#data8 8位立即数送入直接地址单元 3 24
MOV @Ri,A 累加器内容送入间接RAM单元 1 12
如果左边的数(A,Rn,@Ri)大或者等于右边的数(direct,#date8),则CY=0;否则CY=1)

MCS-51系列单片机指令快速记忆方法(简介)chinaben

MCS-51系列单片机指令快速记忆方法(简介)chinaben

MCS-51系列单片机指令快速记忆方法(简介)一、助记符号的记忆方法1 表格列举法把44个指令助记符按功能分为五类,每类列表记忆。

此处从略,请读者自己总结。

2 英文还原法单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆。

例如:增量INC-Inc remect减量DNC-D ecrement短转移SJMP-S hort j ump 长转移LJMP-L ong j ump比较转移CJNE-C ompare j ump n ot e quality绝对转移AJMP-A bsolute j ump空操作NOP-N o op eration交换XCH-E xch ange加法ADD-Add ition乘法MUL-Mul tiplication除法DIV-Div ision左环移RL-R otate l eft进位左环移RLC-R otate l eft c arry右环移RR-R otate r ight进位右环移RRC-R otate r ight c arry3 功能模块记忆法单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为2~3组。

这样,化整为零,各个击破,实现快速记忆。

1)数据传送组。

2)加减运算组MOV 内部数据传送ADD 加法MOVC 程序存储器传送ADDC 带进位加法MOVX 外部数据传送SUBB 带进位减法3)逻辑运算组。

4)子程序调用组。

ANL 逻辑与LCALL 长调用ORL 逻辑或ALALL 绝对调用XRL 逻辑异或RET 子程序返回二、指令的记忆方法1 指令操作数的有关符号MCS-51的寻址方式共有六种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变址寻址、相对寻址。

我们必须掌握其表示的方法。

1)立即数与直接地址。

#data8表示八位立即数,#data16表示是十六位立即数,data或direct表示直接地址。

mcs51单片机指令记忆方法

mcs51单片机指令记忆方法

有2条,累加器A与片外RAM送数共有4条,只要记住了附图,即可掌握上述21条指令。

替换法是将操作数相同而操作码不同的指令归纳集中在一起进行记忆的方法,这种方法的优点是要记住其中的几条,其余的也就全记住了。

例如,加法、带进位加法、带借位减法各有4条指令,但操作数有一一对应关系,12条指令可写在一起为:nADD/ADDC/SUBB A,directADD/ADDC/SUBB A,@R iADD/ADDC/SUBB A,#data其它如与、或、异或(ANL、ORL、XRL),乘、除(MUL、DIV),加1、减1(INC、DEC)等指令都可采用上述方法,这里就不一一列举了。

3.口诀法有一些指令操作过程比较复杂,可采用口诀记忆的方法,我们在这里举了一个简单的例子。

JZ,rel;A=0 (PC)+2+rel→(PC)A≠0 (PC)+2→(PC)上述指令可编成:“JZ rel;A零(A等于0),(PC)加2加地址<相对地址>,A非(A不等于0),(PC)加2再运行”,这样记起来就好多了。

口诀可在理解原义的基础上自己编写,不一定要去推敲用词的准确性和科学性,因为它只是辅助的记忆用词而不是书面的表达形式。

4.单独记忆法对某些特殊的、共性不多的指令,可单独归类进行记忆,例如十进制调整指令DA A,十六进制数据传送指令MOV DPTR,#data16,这种类别的指令不多,应单独去记。

5.例题记忆法在学习MCS—51单片机指令系统时,教科书上一般都配有一定的例题,选用比较典型的,对理解指令有帮助的例题记忆,不仅可强化记忆效果,而且懂得了多条指令的综合运用。

我们在教学中就让学生有针对性地记过几道典型的例题,后来他们对所见到的几条指令印象特别深,用起来非常自如。

限于篇幅,我们也就不一一介绍了。

指令系统是熟悉单片机功能、合理应用单片机的必要软件基础。

学习指令系统还必须与单片机的C PU结构,存储空间的分布,I/O端口的分布结合起来,运用上述的记忆方法,并结合实际问题多作程序分析和简单程序设计,初学者就完全可以在较短的时间内达到较好的学习效果。

(完整版)51单片机汇编指令(全)

(完整版)51单片机汇编指令(全)

指令中常用符号说明Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7)Ri当前寄存器区可作为地址寄存器的2个工作寄存器R0和R1(i=0,1)Direct8位内部数据寄存器单元的地址及特殊功能寄存器的地址#data表示8位常数(立即数)#data16表示16位常数Add16表示16位地址Addr11表示11位地址Rel8位代符号的地址偏移量Bit表示位地址@间接寻址寄存器或基址寄存器的前缀( )表示括号中单元的内容(( ))表示间接寻址的内容指令系统数据传送指令(8个助记符)助记符中英文注释MOV Move 移动MOV A , Rn;Rn→A,寄存器Rn的内容送到累加器AMOV A , Direct;(direct)→A,直接地址的内容送AMOV A ,@ Ri;(Ri)→A,RI间址的内容送AMOV A , #data;data→A,立即数送AMOV Rn , A;A→Rn,累加器A的内容送寄存器RnMOV Rn ,direct;(direct)→Rn,直接地址中的内容送RnMOV Rn , #data;data→Rn,立即数送RnMOV direct , A;A→(direct),累加器A中的内容送直接地址中MOV direct , Rn;(Rn)→direct,寄存器的内容送到直接地址MOV direct , direct;(direct)→direct,直接地址的内容送到直接地址MOV direct , @Ri;((Ri))→direct,间址的内容送到直接地址MOV direct , #data;8位立即数送到直接地址中MOV @Ri , A;(A)→@Ri,累加器的内容送到间址中MOV @Ri , direct;direct→@Ri,直接地址中的内容送到间址中MOV @Ri , #data; data→@Ri ,8位立即数送到间址中MOV DPTR , #data16;data16→DPTR,16位常数送入数据指针寄存器,高8位送入DPH,低8位送入DPL中(单片机中唯一一条16位数据传送指令)(MOV类指令共16条)MOVC Move Cod 查表指令MOVC A , @A+PC;PC+1→PC,(A+PC)→AMOVC A , @A+DPTR;(A+DPTR) →A(MOVC类指令共两条)MOVX Move External 与外部数据寄存区传送数据MOVX A , @DPTR;(DPTR)→A,DPTR间址单元内容送AMOVX @DPTR , A;A→(DPTR),A中内容送入DPTR间址单元MOVX A , @Ri;(Ri)→A,Ri间址单元内容送AMOVX @Ri , A;A→(Ri),A中内容送Ri间址单元(MOVX类指令4条)XCH Exchange 交换指令XCH A , Rn;Rn←→A , Rn的内容与A的内容交换XCH A , Direct; Direct ←→A ,直接地址的内容与A的内容交换XCH A , @Ri;(Ri)←→A ,间址的内容与A的内容交换XCHD Exchange Decimal十进制交换XCHD A , @Ri;(Ri.3~Ri.0) ←→A.3~A.0,间址内容低四位与A中内容低四位交换SWAP Swap 交换SWAP A;A.3~A.0←→ A.7~A.4 , A中低四位与高四位内容交换PUSH Push 入栈PUSH direct;SP+1→SP , (direct)→(SP);直接地址内容压入堆栈顶POP Pop 出栈POP direct;(SP)→(direct) , SP-1→SP;堆栈内容弹出到直接地址●算术运算类指令(7个助记符)ADD Add 加法运算ADD A , Rn;A + Rn→A , A与Rn的内容相加,结果送到A中ADD A , direct;(direct)+A→A,A与直接地址的内容相加,结果送到A中ADD A , @Ri;((Ri))+A→A, A与间址中的内容相加,结果送到A中ADD A , #data;data+A→A,A与立即数相加,和送入AADDC ADD with Carry 带进位加法ADDC A , Rn;A + Rn+CY→A , A与Rn的内容、进位状态相加,结果送到A中ADDC A , direct;(direct)+A+CY→A,A与直接地址的内容、进位状态相加,结果送到A中ADDC A , @Ri;((Ri))+A+CY→A, A与间址中的内容、进位状态相加,结果送到A中ADDC A , #data;data+A+CY→A,A与立即数、进位状态相加,和送入ASUBB Subbtract with Borrow 带进位减法SUBB A , Rn;A-Rn-CY→A,A减寄存器Rn的内容及进位标志,结果送ASUBB A , direct; A-(direct)-CY→A,A直接地址的内容及进位标志,结果送ASUBB A , @Ri; A-((Ri))-CY→A,A间址的内容及进位标志,结果送ASUBB A , #data; A-data-CY→A,A立即数及进位标志,结果送AMUL Multiply 乘法指令MUL AB;A x B→B和A,结果16位,高8位存入B,低8位存入A;若结果大于FFH,则将溢出标志OV置1DIV Divide 除法指令DIV AB;A÷B 商→A,余数→B;若除数为0,结果不确定,则将溢出标志OV置1INC Increment 加1指令INC A;A+1→A,A加1,结果放在AINC Rn; Rn +1→ Rn, Rn加1,结果放在RnINC direct; (direct)+1→ direct,直接地址的内容加1,结果放在该地址中INC @Ri;((Ri))+1→( Ri),间址中的内容加1,结果放在该间址中INC DPTR;(DPTR)+1→DPTR,数据指针内容加1,结果放在数据指针寄存器(DPTR)中DEC Decrement 减1指令INC A;A-1→A,A减1,结果放在AINC Rn; Rn -1→ Rn, Rn减1,结果放在RnINC direct; (direct)-1→ direct,直接地址的内容减1,结果放在该地址中INC @Ri;((Ri))-1→( Ri),间址中的内容减1,结果放在该间址中DA Decimal Adjust 十进制加法调整指令DA A;在加法指令后,把A中二进制码自动调整为BCD码;DA A只能更跟在ADD或ADDC加法指令后,不适用于减法●逻辑运算指令(9个助记符)ANL Logical And 逻辑与运算ANL A , Rn; (A)与(Rn)→A, A的内容与Rn中的内容相与,结果放在A中ANL A , direct; (A)与(direct)→A, A的内容与直接地址中的内容相与,结果放在A中ANL A , @Ri; (A)与((Ri))→A, A的内容与间址的内容相与,结果放在A中ANL A , #data; (A)与(data)→A, A的内容与立即数相与,结果放在A中ANL direct , A; (direct)与(A)→direct, 直接地址中的内容相与A的内容相与,结果放在直接地址中ANL direct , #data;(direct)与#data→direct, 直接地址中的内容相与立即数相与,结果放在直接地址中ORL Logical OR 逻辑或运算ORL A , Rn; (A) 或(Rn)→A, A的内容与Rn中的内容相或,结果放在A中ORL A , direct; (A) 或(direct)→A, A的内容与直接地址中的内容相或,结果放在A中ORL A , @Ri; (A) 或((Ri))→A, A的内容与间址的内容相或,结果放在A中ORL A , #data; (A) 或(data)→A, A的内容与立即数相或,结果放在A中ORL direct , A; (direct) 或A)→direct, 直接地址中的内容相与A的内容相或,结果放在直接地址中ORL direct , #data;(direct) 或#data→direct, 直接地址中的内容相与立即数相或,结果放在直接地址中XRL Logical exclusive or 逻辑异或运算ORL A , Rn; (A) 异或(Rn)→A, A的内容与Rn中的内容相异或,结果放在A中ORL A , direct; (A) 异或(direct)→A, A的内容与直接地址中的内容相异或,结果放在A中ORL A , @Ri; (A) 异或((Ri))→A, A的内容与间址的内容相异或,结果放在A中ORL A , #data; (A) 异或(data)→A, A的内容与立即数相异或,结果放在A中ORL direct , A; (direct) 或A)→direct, 直接地址中的内容相与A的内容相异或,结果放在直接地址中ORL direct , #data;(direct) 异或#data→direct, 直接地址中的内容相与立即数相异或,结果放在直接地址RL Rotate Left 循环左移指令RL A;每执行一次,A中的内容左移一位RR Rotate Right 循环右移指令RR A;每执行一次,A中的内容右移一位RLC Rotate Left with the Carry flag 带进位循环左移指令RLC A;每执行一次,CY和A中的内容左移一位RRC Rotate Right with the Carry flag带进位循环又移指令RRC A;每执行一次,CY和A中的内容右移一位注意:循环移位指令只能对A中的内容进行移位操作CPL Complement 取反指令(求补指令)CPL A;累加器内容按位取反,0变1,1变0CLR Clear 清零指令CLR A;累加器清零(A各位全变为0)●控制转移指令(9个助记符)LJMP Long Jump 长跳转指令LJMP add16;add16→PC,无条件跳转到add16地址,可在64KB范围内转移AJMP Absolute Jump 绝对跳转指令AJMP add11;add11→PC,无条件跳转到add11地址,可在2KB范围内转移SJMP Short Jump 短跳转指令SJMP rel;PC+2+rel→PC,rel是偏移量,8位有符号数(-127~127),可向前后跳转±128个地址单元JMP Jump 跳转指令JMP @A+DPTR;A+DPTR→PC,属于散转指令,无条件转向A与DPTR内容相加后形成的新地址JZ Jump if acc is Zero累加器为零转移JZ rel;A=0转向PC+2+rel→PC,A≠0,顺序执行JNZ Jump if acc is Not Zero累加器不为零转移JNZ rel;A≠0转向PC+2+rel→PC,A=0,顺序执行CJNE Compare and Jump if Not Equal比较不相等则转移CJNE A , direct , rel;A≠(direct)转向PC+3+rel→PC,否则顺序执行(PC+3 →PC);(A)>(direct)CY=0, (A)<(direct)CY=1CJNE A , #data , rel;A≠(data)转向PC+3+rel→PC,否则顺序执行(PC+3 →PC);(A)>(data)CY=0,( A)<(data)CY=1CJNE Rn , #data , rel; Rn≠(data)转向PC+3+rel→PC,否则顺序执行(PC+3 →PC); (Rn) >(data)CY=0, (Rn) <(data)CY=1CJNE @Ri , #data , rel;((Ri))≠(data)转向PC+3+rel→PC,否则顺序执行(PC+3 →PC); ((Ri))>(data)CY=0, ((Ri)) <(data)CY=1DJNE Decrement and Jump if Not Zero 减1不为0则转移DJNE Rn , rel;Rn-1→Rn, Rn≠0转向PC+2+rel→PC,否则顺序执行(PC+2→PC)DJNZ direct , rel;(direct-1)→direct, direct≠0转向PC+2+rel→PC,否则顺序执行(PC+2→PC)LCALL Long Call 长条用指令LCALL addr16;调用程序入口地址为addr16的之程序ACALL Absolute Call短调用ACALL addr11;调用程序入口地址为addr11的之程序RET ReturnRET;放在子程序最后,使程序准确返回到主程序断点处RETI Return from InterruptRETI;中断返回指令,能清楚优先级状态NOP No Operation 空操作指令NOP;空操作,产生一个机器周期延时●位操作指令MOV Move 数据传送指令MOV C , bit;(bit)→C,寻址位的状态送入CMOV bit , C;(C)→bit,C的转态送入地址中CLR Clear 清零指令CLR C;0→C,清零累加器CLR bit;清零直接寻址位CPL Complement 取反指令(求补指令)CPL C;c取反CPL bit;直接寻址位取反SETB Set Bit 置位SETB C;C置1SETB bit;直接寻址位置1ANL And Logical 与逻辑运算ANL C , bit;直接寻址位与C相与,结果放在CANL C , /bit; 直接寻址位与非C相与,结果放在CORL OR Logical 或逻辑运算ORL C , bit;直接寻址位与C相或,结果放在CORL C , /bit; 直接寻址位与非C相或,结果放在CJC Jump if Carry is set 进位位为1则转移JC rel;C=1,转向PC+2+rel→PC,否则顺序执行PC+2→PCJNC Jump if Carry is Not set 进位位为不为1则转移JNC rel;C=0,转向PC+2+rel→PC,否则顺序执行PC+2→PCJB Jump if Bit is set 进位位为1则转移JB bit , rel;(bit)=1,转向PC+3+rel→PC,否则顺序执行PC+3→PCJNB Jump if Bit is Not set 进位位为1则转移JNB bit , rel;(bit)=0,转向PC+3+rel→PC,否则顺序执行PC+3→PCJBC Jump if Bit is set and Clear bit指定位等于1转移并清该位JBC bit , rel; (bit)=1,转向PC+3+rel→PC,同时0→bit否则顺序执行PC+3→PC伪指令ORG Origin 代码起始地址指令ORG 0000HMOV A , #0010H;这条指令从0000H这个地址单元开始写起END End 汇编程序结束指令END;汇编指令结束DB字节定义伪指令ORG 1000HDB 01H , 02H;则(1000H)=01H,(1001H)=02HORG 1100HDB ‘01’;则(1100H)=30H,30H是0的ASCII码,(1101H)=31H,31H是1的ASCII码DW双字节定义伪指令ORG 2000HDW 2546H , 0178H; (2000H)=25H, (2001H)=46H, (2002H)=01H, (2003H)=78H,EQU数据赋值伪指令X EQU n;将n的值赋给xBIT位数据赋值伪指令y BIT b;y是用户定义标号,b为0或1MACRO宏指令宏指令名MACRO 形式参数······代码段······ENDM;宏指令定义结束寻址方式及相关的存储空间寻址方式寻址范围寄存器寻址R0~R7A 、B、C(CY)、AB(双字节)、DPTR(双字节)、PC(双字节)直接寻址内部RAM低128字节特殊功能寄存器内部RAM位寻区的128个位特殊功能寄存器中可寻址的位寄存器间接寻址内部数据存储器RAM【@R0,@R1,@SP(仅PUSH,POP)】内部数据存储器单元的低4位(@R0,@R1)外部RAM或I/O口(@R0,@R1,@DPTR)立即寻址程序存储器(常数)程序存储器(@A+PC,@A+DPTR)基寄存器加变址寄存器间接寻址。

单片机指令快速记忆

单片机指令快速记忆

单片机MCS-51系列指令快速记忆法作者:本站来源:本站整理发布时间:2006-5-31 11:57:34减小字体增大字体随着微电子技术和超大规模集成电路技术的发展,单片微型计算机以其体积小、性价比高、功能强、可靠性高等独有的特点,在各个领域(如工业控制、家电产品、汽车电子、通信、智能仪器仪表)得到了广泛的应用。

学习、使用单片机的人越来越多,而生产单片机的厂家很多,单片机种类繁杂,不知如何选择。

据统计,八位单片机占全球单片机销量的65%。

在八位单片机中,Intel公司的805 1单片机内核已成为8位单片机事实上的标准。

因此,对初学者而言,选择8051单片机来学习不失为明智的选择。

学习单片机,除了搞清单片机内部功能、存储空间分配及I/O接口外,还应掌握其指令系统。

MCS-51共有111条指令,现介绍我们总结出的快速记忆MCS-51指令的方法,供大家参考。

大家都知道,汇编语言指令由操作码、操作数两部分组成。

MCS-51使用汇编语言指令,它共有42个操作码助记符,33种功能,其操作数有#data、direct、Rn、@Ri等。

这里先介绍指令助记符及其相关符号的记忆方法。

一、助记符号的记忆方法1 表格列举法把44个指令助记符按功能分为五类,每类列表记忆。

此处从略,请读者自己总结。

2 英文还原法单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆。

例如:增量INC-Increment减量DEC-Decrement短转移SJMP-Short jump 长转移LJMP-Long jump比较转移CJNE-Compare jump not equality绝对转移AJMP-Absolute jump空操作NOP-No operation交换XCH-Exchange加法ADD-Addition乘法MUL-Multiplication除法DIV-Division左环移RL-Rotate left进位左环移RLC-Rotateleft carry右环移RR-Rotate right进位右环移RRC-Rotateright carry3 功能模块记忆法单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为2~3组。

51单片机汇编指令集合(中英指令翻译)

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 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 left) 循环左移;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 Interruption)中断返回;SJMP(Short Jump)短转移;AJMP(Absolute Jump)绝对转移;LJMP(Long Jump)长转移;CJNE (Compare Jump if Not Equal)比较不相等则转移;DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;JZ (Jump if Zero)结果为0则转移;JNZ (Jump if Not Zero) 结果不为0则转移;JC (Jump if the Carry flag is set)有进位则转移;JNC (Jump if Not Carry)无进位则转移;JB (Jump if the Bit is set)位为1则转移;JNB (Jump if the Bit is Not set) 位为0则转移;JBC(Jump if the Bit is set and Clear the bit) 位为1则转移,并清除该位;NOP (No Operation) 空操作;五、位操作指令(1种助记符)CLR 位清零;SETB(Set Bit) 位置1。

51单片机汇编指令总结

51单片机汇编指令总结

51单片机汇编指令总结51单片机汇编指令总结数据传输指令一.片内RAM数据传输指令1.以累加器A为目的操作数的指令:MOVA,RnMOVA,directMOVA,@RiMOVA,#data2.以寄存器Rn为目的操作数的指令:MOVRn,AMOVRn,directMOVRn,data3.以直接地址为目的操作数的指令:MOVdirect,AMOVdirect,RnMOVdirect1,derect2MOVdirect,@RiMOVdirect,#data4.间接地址为目的操作数的指令:MOV@Ri,AMOV@Ri,directMOV@Ri,#data5.十六位数据传送指令:MOVDPTR,#data16二.累加器A与片外RAM数据传送指令:MOVXA,@RiMOVXA,@DPTRMOVX@Ri,AMOVX@DPTR,A三.查表寻址:MOVCA,@A+DPTR(先PC←(PC)+1,后A←((A)+(DPTR)))+MOVCA,@A+PC(先PC←(PC)+1,后A←((A)+(PC)))四.交换指令:1.字节交换指令:XCHA,RnXCHA,directXCHA,@Ri2.半字节交换指令:XCHDA,@Ri3.累加器半字节交换指令:SWAPA五.栈操作指令:1.PUSH(入栈指令)PUSHdirect2.POP(出栈指令)POPdirect算术运算指令:一.加法减法指令:1.加法指令:ADDA,RnADDA,directADDA,@RiADDA,#data2.带进位加法指令:ADDCA,RnA←(A)+(Rn)+CYADDCA,directA←(A)+(direct)+CYADDCA,@RiA←(A)+((Ri))+CYADDCA,#dataA←(A)+(data)+CY3.带借位减法指令:SUBBA,RnA←(A)-CY-(Rn)SUBBA,directA←(A)-CY-(direct)SUBBA,@RiA←(A)-CY-((Ri))SUBBA,#dataA←(A)-CY-#data二.乘法除法指令:1.乘法指令:MULABBA←(A)×(B)高字节放在B中,低字节放在A中2.除法指令:DIVABA←(A)÷(B)的商,(B)←(A)÷(B)的余数三.加1减1指令:1.加1指令:INCAA←(A)+1INCRnRn←(Rn)+1INCdirectdirect←(direct)+1INC@Ri(Ri)←((Ri))+1INCDPTRDPTR←(DPTR)+12.减1指令:DECADECRnDECdirectDEC@Ri四.十进制调制指令:DAA调整累加器A的内容为BCD码逻辑操作指令:一.逻辑与、或、异或指令:1.逻辑与指令:ANLA,RnANLA,directANLA,@RiANLA,#data2.逻辑或这令:ORLA,RnORLA,directORLA,@RiORLA,#dataORLdirect,AORLdirect,#data3.逻辑异或指令:XRLA,RnXRLA,directXRLA,@RiXRLA,#dataXRLdirect,AXRLdirect,#data二.清零、取反指令:1.累加器A清零指令:CRLA2.累加器A取反指令:CPLA三.循环位移指令:1.累加器A循环左移指令:RLA2.累加器A循环右移指令:RRA3.累加器A连同进位位循环左移指令:RLCA4.累加器A连同进位位循环右移指令:RRCA控制转移指令:一.无条件转移指令:1.绝对转移指令:AJMPaddr11(先PC+2,然后将addr11的低十位传给PC,PC的高六位不变)2.长转移指令:LJMPaddr16(用addr16的值替换PC的值)3.相对转移(短转移)指令:SJMPrel(带符号的偏移字节数)(PC+2,再加rel赋值给PC)4.间接转移指令:JMP@A+DPTR(A)+(DPTR)→(PC)二.条件转移指令:1.累加器判零转移指令:JZrel先PC+2;后判断,A为0时转移,PC+rel赋值给PC;否则顺序执行JNZrel先PC+2,后判断,A不为0时转移,PC+rel赋值给PC;否则顺序执行2.比较转移指令:CJNE目的操作数,源操作数,relCJNEA,direct,rel先PC+3传回PC,再比较目的操作数和原操作数CJNEA,#data,rel 目>源时,程序转移,PC+rel传回PC且CY=0CJNERn,#data,rel目=源时,程序顺序执行CJNE@Ri,#data,rel目ORLC,bitORLC,bit三.位清零、置一、取反指令:1.位清零指令:CLRCCLRbit2.位置一指令:SETBCSTEBbi3.位取反指令:CPLCCPLbit这类指令的功能执行的结果不影响标志位,当直接寻址位地址为端口P0~P3中的某一位时,具有“读-改-写”的功能。

51单片机汇编语言指令教程汇集

51单片机汇编语言指令教程汇集

51单片机汇编语言指令教程汇集1.MOV指令:MOV指令用于将一个值从一个寄存器或内存位置复制到另一个寄存器或内存位置。

例如,MOVA,将常数10复制到累加器A中。

2.ADD指令:ADD指令用于将两个操作数相加,并将结果保存在目标操作数中。

例如,ADDA,B将寄存器B的值与累加器A的值相加,并将结果保存在累加器A中。

3.SUB指令:SUB指令用于将源操作数减去目标操作数,并将结果保存在目标操作数中。

例如,SUBA,B将寄存器B的值减去累加器A的值,并将结果保存在累加器A中。

4.INC指令:INC指令用于将指定的操作数加1、例如,INCA将累加器A的值加15.DEC指令:DEC指令用于将指定的操作数减1、例如,DECA将累加器A的值减16.JMP指令:JMP指令用于无条件地跳转到指定的地址。

例如,JMP1000h将跳转到地址1000h处执行指令。

9. ACALL指令:ACALL指令用于调用一个子程序,其地址由指令给出,子程序结束后返回到调用指令的下一条指令。

例如,ACALL Subroutine将调用一个名为Subroutine的子程序。

10.RET指令:RET指令用于从子程序返回到调用指令的下一条指令。

例如,RET将从子程序返回。

11.NOP指令:NOP指令用于空操作,即不执行任何操作。

它通常用于延时或填充空白。

以上是一些常用的51单片机汇编语言指令,这些指令可以用于控制I/O口、进行算术运算、执行跳转和调用子程序等。

学习并熟练掌握这些指令,对于编写高效的51单片机汇编程序非常重要。

希望本文提供的51单片机汇编语言指令教程能够帮助你入门和掌握51单片机汇编语言的基本知识。

如果你想深入学习51单片机汇编语言,建议参考相关的教材或在线资源,进行更加系统和全面的学习。

51单片机汇编指令表

51单片机汇编指令表

以下是一些常见的51单片机(如8051系列)的汇编指令:
1. 数据传送指令:
- MOV:将一个数据或寄存器的值移动到另一个寄存器或存储器位置。

- MOVC:将数据从外部代码存储器复制到累加器或寄存器。

2. 算术运算指令:
- ADD:将累加器与另一个寄存器或存储器中的值相加。

- SUB:从累加器中减去另一个寄存器或存储器中的值。

- INC:将累加器或寄存器的值加1。

- DEC:将累加器或寄存器的值减1。

3. 逻辑运算指令:
- ANL:对累加器和另一个寄存器或存储器中的值进行逻辑与操作。

- ORL:对累加器和另一个寄存器或存储器中的值进行逻辑或操作。

- XRL:对累加器和另一个寄存器或存储器中的值进行逻辑异或操作。

- CPL:对累加器或寄存器中的值进行按位取反操作。

4. 条件分支指令:
- CJNE:比较两个值,并在不相等时跳转到指定的地址。

- DJNZ:递减累加器或寄存器,并在结果不为零时跳转到指定的地址。

5. 跳转指令:
- JMP:无条件跳转到指定的地址。

- SJMP:短跳转,跳转到相对于当前地址的指定偏移量。

- AJMP:绝对跳转,跳转到指定的地址。

- LCALL:长调用,将当前地址入栈并跳转到指定的子程序地址。

6. 位操作指令:
- SETB:将某个位设置为1。

- CLR:将某个位清零。

- JB:如果某个位为1,则跳转到指定地址。

- JNB:如果某个位为0,则跳转到指定地址。

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

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

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 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 left) 循环左移;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 Interruption)中断返回;SJMP(Short Jump)短转移;AJMP(Absolute Jump)绝对转移;LJMP(Long Jump)长转移;CJNE (Compare Jump if Not Equal)比较不相等则转移;DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;JZ (Jump if Zero)结果为0则转移;JNZ (Jump if Not Zero) 结果不为0则转移;JC (Jump if the Carry flag is set)有进位则转移;JNC (Jump if Not Carry)无进位则转移;JB (Jump if the Bit is set)位为1则转移;JNB (Jump if the Bit is Not set) 位为0则转移;JBC(Jump if the Bit is set and Clear the bit) 位为1则转移,并清除该位;NOP (No Operation) 空操作;五、位操作指令(1种助记符)CLR 位清零;SETB(Set Bit) 位置1。

(完整版)C51单片机汇编语言指令集,推荐文档

(完整版)C51单片机汇编语言指令集,推荐文档

的逻辑判断,结果存回累加器
ANL 1 1 将累加器的值与间接地址的内容做AND
A,@Ri
的逻辑判断,结果存回累加器
ANL 2 1 将累加器的值与常数做AND的逻辑判断,
A,#data
结果存回累加器
ANL 2 1 将直接地址的内容与累加器的值做AND
direct,A
的逻辑判断,结果存回该直接地址
ANL
1 1 将累加器的值减去寄存器的值减借 位C,结果存回累加器
2 1 将累加器的值减直接地址的值减借 位C,结果存回累加器
1 1 将累加器的值减间接地址的值减借
A,@Ri 12.SUBB A,0data
位C,结果存回累加器 2 1 将累加器的值减常数值减借位C,结
果存回累加器
13.INC A 1 1 将累加器的值加1 14.INC Rn 1 1 将寄存器的值加l
51汇编语言指令集
符号定义表
符号
含义
Rn
R0~R7寄存器n=0~7
Direct 直接地址,内部数据区的地址 RAM(00H~7FH)
SFR(80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON, P1,TCON,P0
@Ri
间接地址Ri=R0或R1
8051/31RAM地址
(00H~7FH) 8052/32RAM地址(00H~FFH)
44.CPL A 1 1 将累加器的值反相
45.RL A 1 1 将累加器的值左移一位
46.RLC A 1 1 将累加器含进位C左移一位
47.RR A 1 1 将累加器的值右移一位
48.RRC A 1 1 将累加器含进位C右移一位
49.SWAP 1 1 将累加器的高4位与低4位的内容交换。

51单片机汇编指令详解

51单片机汇编指令详解

MCS-51系列单片机指令以A开头的指令有18条,分别为:ACALL addr11ADD A,RnADD A,directADD A,@RiADD A,#dataADDC A,RnADDC A,directADDC A,@RiADDC A,#dataAJMP addr11ANL A,RnANL A,directANL A,@RiANL A,#dataANL direct,AANL direct,#dataANL C,bitANL C,/bit1、ACALL addr11指令名称:绝对调用指令指令代码:{A10,A9,A8,10001},A[7:0]指令功能:构造目的地址,进行子程序调用。

其方法是以指令提供的11位地址(al0~a0),取代PC的低11位,PC的高5位不变。

操作内容:PC←(PC)+2SP←(SP)+1(SP)←(PC)7~0SP←(SP)+1(SP)←(PC)15~8PC10~0←addrl0~0字节数: 2机器周期:2使用说明:由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。

2、ADD A,Rn指令名称:寄存器加法指令指令代码:28H~2FH指令功能:累加器内容与寄存器内容相加操作内容:A←(A)+(Rn), n=0~7字节数: 1机器周期;1影响标志位:C,AC,OV3、ADD A,direct指令名称:直接寻址加法指令指令代码:25H指令功能:累加器内容与内部RAM单元或专用寄存器内容相加操作内容:A←(A)+(direct)字节数: 2机器周期:1影响标志位:C,AC,OV4、ADD A,@Ri指令名称:间接寻址加法指令指令代码:26H~27H指令功能:累加器内容与内部RAM低128单元内容相加操作内容:A←(A)+((Ri)), i=0,1字节数: 1机器周期:1影响标志位:C,AC,OV5、ADD A,#data指令名称:立即数加法指令指令代码:24H指令功能:累加器内容与立即数相加操作内容:A←(A)+data字节数: 2机器周期:1影响标志位:C,AC,OV6、ADDC A,Rn指令名称:寄存器带进位加法指令指令代码:38H~3FH指令功能:累加器内容、寄存器内容和进位位相加操作内容:A←(A)+(Rn)+(C), n=0~7字节数: 1机器周期:1影响标志位:C,AC,OV7、ADDC A,direct指令名称:直接寻址带进位加法指令指令代码:35H指令功能:累加器内容、内部RAM低128单元或专用寄存器内容与进位位加操作内容:A←(A)+(direct)+(C)字节数: 2机器周期:1影响标志位:C,AC,OV8、ADDC A,@Ri指令名称:间接寻址带进位加法指令指令代码:36H~37H指令功能:累加器内容、内部RAM低128单元内容及进位位相加操作内容:A←(A)+((Ri))+(C), i=0,1字节数: 1机器周期:1影响标志位:C,AC,OV9、ADDC A,#data指令名称:立即数带进位加法指令指令代码:34H指令功能:累加器内容、立即数及进位位相加操作内容:A←(A)+data+(C)字节数: 2机器周期:1影响标志位:C,AC,OV10、AJMP addr11指令名称:绝对转移指令指令代码:{A10,A9,A8,00001},A[7:0]指令功能:构造目的地址,实现程序转移。

51单片机汇编指令大全

51单片机汇编指令大全

51单片机汇编指令大全汇编指令大全: 表示当前寄存器区的个工作寄存器: 表示当前寄存器区的或,可作地址指针即间址寄存器(或): 为间接寄存器或基址寄存器的前缀.: 表示位内部数据存储单元的地址.它可以是内部的单元地址.特殊功能寄存器的地址()或名称,: 累加器.: .特殊功能寄存器,用于和指令中.:::::::::“(一()(), : ; ()<()() 以直接地址为目的的传送指令:, ;()<(), ; ()<(), ; ()<(), ; ()<(()), ; ()<() 以寄存器间接地址为目的的传送指令:, ;(())<(), ;(())<(), ;(())<(二) 数据指针赋值指令(位数据传送指令) , ;(三) 片外数据传送指令, ;()<(())片外, ;()<(())片外, ;(())片外<(), ;(())片外<()(四) 数据访问指令(查表指令)(五(六()()()(七()(), ; ()<() (()), ; ()<()()加指令:, ;()<();()<();(())<(());()<();()<()(八) 减法指令()带进位减法指令:, ;()<() (), ; ()<() (), ; ()<() (()), ; ()<()()减指令:;()<() ;()<();()<();(())<(()) (九()存器,()(十(()(), ; ()<()∨() 逻辑异或运算指令: , ;()<()⊙() , ; ()<()⊙(), ; ()<()⊙(()) , ; ()<()⊙, ;()<()⊙(), ; ()<()⊙() 累加器清和去反指令;()< (累加器清指令);()<() (累加器取反指令)() 累加器移位指令:不带进位循环左移: <<([]()()() 短转移指令 ;()<()() 变址寻址转移指令 ;()<()()[] 条件转移指令:() 累加器判转移指令:;如果(),跳转到目标语句,否则顺序执行;如果()≠,跳转到目标语句,否则顺序执行() 比较转移指令:, , ;如果()≠,则跳转到目标语句,否则程序顺序执行 , ; 如果()≠(),则跳转到目标语句,否则程序顺序执行, ; 如果()≠,则跳转到目标语句,否则程序顺序执行, ; 如果()≠,则跳转到目标语句,否则程序顺序执行 () 循环控制转移指令:, ;()先减,如减后()≠,则跳转到目标语句;否则顺序执行 , ; ()先减,如减后()≠,则跳转到目标语句;否则顺序执行 (十三) 子程序调用和返回指令() 绝对调用指令:() 长调用指令:()((()()()()();如果位,跳转到目标语句,否则顺序执行() 以指定位状态为条件的转移指令:, ;如果,跳转到目标语句,否则顺序执行, ;如果,跳转到目标语句,否则顺序执行, ;如果,跳转到目标语句,同时将位清;否则顺序执行。

51系列单片机指令速记法

51系列单片机指令速记法

单片机程序是用文本编辑器编写的纯文本文件。像在Windows记事本中用汉语写计划,先写这件事再写那件事,以所使用单片机语言的语法,按我们的想法把单片机要做的事“一件一件”的依次写下来。若遇到“有些事”是重复的,就指明在那些地方已有说明(跳转);若在正常安排中,出现其它突发事件,则必须写一段突发事件处理计划(中断)... ...最后保存文件的扩展名也应与所使用的语言要求的名字一致,同记事本上汉语的文章一般保存为*.txt扩展名,而汇编语言的文件扩展名一般应保存为*.asm。有的开发系统则有自己的规定,如用 Keil C51开发系统,编写的汇编程序扩展名为*.a51,当然Keil C51开发系统也有自己的编辑器,不必使用Windows中的记让单片机按你的想法完成一项任务,必须先编写供其运行的程序,编写单片机的程序应使用该单片机可以识别的“语言”,否则程序写得再完美,对单片机来说都是无用功。目前较流行的有汇编和C语言,汇编语言可以精确地控制单片机工作的每一步,而C语言则注重结果,不关心单片机具体的每一步。习惯上宜先学汇编语言后学C语言,这样可以对单片机有一个更深的了解。而且用C语言编程,在需要精确控制时还需要嵌入汇编语句,较为麻烦。当然,也有人一开始就用C语言的,后来再学汇编;若你学过计算机的 Turbo C(快速的c编译器),那么学单片机的C语言也许会更快一些。
而在你购买单片机的书籍时,最好选择前面你能看懂而后面你看不懂的,因为前后都看不懂的书在短时间内不会对你起多大作用。当然不是把书用来当资料查的也不必买前后你都懂的,因它对你来说太简单易懂了。应以原理书籍为主,其次购买一些应用方面的书籍以供参考。
电子技术本身是与实验相辅相成的,光靠看书是很难理解其原理和学会单片机开发的。此时为了能够学好单片机,你应该购置相关单片机的芯片、编程器、实验板,以及开发它的相关软件。以边看书边实验的方式进行理论与实践相结合的学习,这样效果更佳!由于初学,不可能购置很多昂贵的设备,故建议购置其程序储存器是可以反复可擦写的供学习用的单片机芯片,如AT89C系列或AVR系列。这样,在学习烧写(编程)时就无后顾之忧了。

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

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

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 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 left) 循环左移;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 Interruption)中断返回;SJMP(Short Jump)短转移;AJMP(Absolute Jump)绝对转移;LJMP(Long Jump)长转移;CJNE (Compare Jump if Not Equal)比较不相等则转移;DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;JZ (Jump if Zero)结果为0则转移;JNZ (Jump if Not Zero) 结果不为0则转移;JC (Jump if the Carry flag is set)有进位则转移;JNC (Jump if Not Carry)无进位则转移;JB (Jump if the Bit is set)位为1则转移;JNB (Jump if the Bit is Not set) 位为0则转移;JBC(Jump if the Bit is set and Clear the bit) 位为1则转移,并清除该位;NOP (No Operation) 空操作;五、位操作指令(1种助记符)CLR 位清零;SETB(Set Bit) 位置1。

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

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

51单片机汇编指令集(附记忆方法) 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) 出栈;ADD(Addition) 加法;ADDC(Add with Carry) 带进位加法;SUBB(Subtract with Borrow) 带借位减法;DA(Decimal Adjust) 十进制调整;INC(Increment) 加1;DEC(Decrement) 减1;MUL(Multiplication、Multiply) 乘法;DIV(Division、Divide) 除法;ANL(AND Logic) 逻辑与;ORL(OR Logic) 逻辑或;XRL(Exclusive-OR Logic) 逻辑异或;CLR(Clear) 清零;CPL(Complement) 取反;RL(Rotate left) 循环左移;RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移;RRC (Rotate Right throught the Carry flag) 带进位循环右移;SWAP (Swap) 低4位与高4位交换;ACALL(Absolute subroutine Call)子程序绝对调用; LCALL(Long subroutine Call)子程序长调用; RET(Return from subroutine)子程序返回; RETI(Return from Interruption)中断返回; SJMP(Short Jump)短转移;AJMP(Absolute Jump)绝对转移;LJMP(Long Jump)长转移;CJNE (Compare Jump if Not Equal)比较不相等则转移;- 1 -DJNZ (Decrement Jump if Not Zero)减1后不为0则转移; JZ (Jump if Zero)结果为0则转移;JNZ (Jump if Not Zero) 结果不为0则转移;JC (Jump if the Carry flag is set)有进位则转移; JNC (Jump if Not Carry)无进位则转移;JB (Jump if the Bit is set)位为1则转移;JNB (Jump if the Bit is Not set) 位为0则转移; JBC(Jump if the Bit is set and Clear the bit) 位为1则转移,并清除该位;NOP (No Operation) 空操作;CLR 位清零;SETB(Set Bit) 位置1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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 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 left) 循环左移;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 Interruption)中断返回;SJMP(Short Jump)短转移;AJMP(Absolute Jump)绝对转移;LJMP(Long Jump)长转移;CJNE (Compare Jump if Not Equal)比较不相等则转移;DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;JZ (Jump if Zero)结果为0则转移;JNZ (Jump if Not Zero) 结果不为0则转移;JC (Jump if the Carry flag is set)有进位则转移;JNC (Jump if Not Carry)无进位则转移;JB (Jump if the Bit is set)位为1则转移;JNB (Jump if the Bit is Not set) 位为0则转移;JBC(Jump i f the Bit is set and Clear the bit) 位为1则转移,并清除该位;NOP (No Operation) 空操作;五、位操作指令(1种助记符)CLR 位清零;SETB(Set Bit) 位置1。

8种常用伪指令1.ORG 16位地址;此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址。

2.[标号:] DB 字节数据项表;将项表中的字节数据存放到从标号开始的连续字节单元中。

例如:SEG: DB 88H,100,“7”,“C”3.[标号:]DW 双字节数据项表;定义16位地址表,16地址按低位地址存低位字节,高位地址存高位字节。

例如:TAB: DW 1234H,7BH4.名字 EQU 表达式或名字=表达式;用与给一个表达式赋值或给字符串起名字。

之后名字可用做程序地址,数据地址或立即数地址使用。

名字必须是一字母开头的字母数字串。

例如:COUNT=10 或 SPACE EQU 10H5.名字 DATA 直接字节地址;给8位内部RAM单元起个名字,名字必须是一字母开头的字母数字串。

同一单元可起多个名字。

例如:ERROR DATA 80H6.名字 XDATA 直接字节地址;给8位外部RAM起个名字,名字规定同DATA伪指令。

例如:IO_PORT XDATA 0CF04H7.名字 BIT 位指令;给一可位寻址的位单元起个名字,规定同DATA伪指令。

例如:SWT BIT 30H8.[标号:] END;指出源程序到此结束,汇编对其后的程序语句不予理睬。

源程序只在主程序最后使用一个END。

指令集(111条)助记符说明字节周期代码1.数据传送指令(30条)MOV A,Rn 寄存器送 A 1 1 E8--EF MOV A,data 直接字节送 A 2 1 E5 MOV A,@Ri 间接RAM 送A 1 1 E6--E7 MOV A,#data 立接数送 A 2 1 74 MOV Rn,A A 送寄存器 1 1 F8--FF MOV Rn,data 直接数送寄存器 2 2 A8--AF MOV Rn,#data 立即数送寄存器 2 1 78--7F MOV data,A A 送直接字节 2 1 F5 MOV data,Rn 寄存器送直接字节 2 1 88—8F MOV data,data 直接字节送直接字节 3 2 85 MOV data,@Ri 间接 Rn 送直接字节 2 2 86;87 MOV data,#data 立即数送直接字节 3 2 75 MOV @Ri,A A 送间接 Rn 1 2 F6;F7 MOV @Ri,data 直接字节送间接Rn 1 1 A6;A7 MOV @Ri,#data 立即数送间接 Rn 2 2 76;77 MOV DPTR,#data16 16 位常数送数据指针 3 1 90 MOV C,bit 直接位送进位位 2 1 A2 MOV bit,C 进位位送直接位 2 2 92 MOVC A,@A+DPTR A+DPTR 寻址程序存贮字节送 A 3 2 93 MOVC A,@A+PC A+PC 寻址程序存贮字节送 A 1 2 83 MOVX A,@Ri 外部数据送A(8 位地址) 1 2 E2;E3 MOVX A,@DPTR 外部数据送A(16 位地址) 1 2 E0 MOVX @Ri,A A 送外部数据(8 位地址) 1 2 F2;F3 MOVX @DPTR,A A 送外部数据(16 位地址) 1 2 F0 PUSH data 直接字节进栈道,SP 加1 2 2 C0 POP data 直接字节出栈,SP 减1 2 2 D0 XCH A,Rn 寄存器与 A 交换 1 1 C8—CF XCH A,data 直接字节与 A 交换 2 1 C5 XCH A,@Ri 间接Rn 与A 交换 1 1 C6;C7 XCHD A,@Ri 间接Rn 与A 低半字节交换 1 1 D6;D72.逻辑运算指令(35条)ANL A,Rn 寄存器与到 A 1 1 58—5F ANL A,data 直接字节与到 A 2 1 55 ANL A,@Ri 间接RAM与到A 1 1 56;57 ANL A,#data 立即数与到 A 2 1 54 ANL data,A A与到直接字节 2 1 52 ANL data,#data 立即数与到直接字节 3 2 53 ANL C,bit 直接位与到进位位 2 2 82 ANL C,/bit 直接位的反码与到进位位 2 2 B0ORL A,Rn 寄存器或到 A 1 1 48—4F ORL A,data 直接字节或到 A 2 1 45 ORL A,@Ri 间接RAM或到A 1 1 46;47 ORL A,#data 立即数或到 A 2 1 44 ORL data,A A或到直接字节 2 1 42 ORL data,#data 立即数或到直接字节 3 2 43 ORL C,bit 直接位或到进位位 2 2 72 ORL C,/bit 直接位的反码或到进位位 2 2 A0 XRL A,Rn 寄存器异或到 A 1 1 68—6F XRL A,data 直接字节异或到 A 2 1 65 XRL A,@Ri 间接RAM异或到A 1 1 66;67 XRL A,#data 立即数异或到 A 2 1 64 XRL data,A A异或到直接字节 2 1 62 XRL data,#data 立即数异或到直接字节 3 2 63 SETB C 进位位置 1 1 1 D3 SETB bit 直接位置 1 2 1 D2 CLR A A清0 1 1 E4 CLR C 进位位清 0 1 1 C3 CLR bit 直接位清 0 2 1 C2 CPL A A求反码 1 1 F4 CPL C 进位位取反 1 1 B3 CPL bit 直接位取反 2 1 B2RL A A循环左移一位 1 1 23 RLC A A 带进位左移一位 1 1 33RR A A右移一位 1 1 03 RRC A A 带进位右移一位 1 1 13 SWAP A A 半字节交换 1 1 C43.算术运算指令(24条)ADD A,Rn 寄存器加到 A 1 1 28—2F ADD A,data 直接字节加到 A 2 1 25 ADD A,@Ri 间接RAM 加到A 1 1 26;27 ADD A,#data 立即数加到 A 2 1 24 ADDC A,Rn 寄存器带进位加到 A 1 1 38—3F ADDC A,data 直接字节带进位加到 A 2 1 35 ADDC A,@Ri 间接RAM 带进位加到 A 1 1 36;37 ADDC A,#data 立即数带进位加到 A 2 1 34 SUBB A,Rn 从A 中减去寄存器和进位 1 1 98—9F SUBB A,data 从A 中减去直接字节和进位 2 1 95 SUBB A,@Ri 从A 中减去间接RAM 和进位 1 1 96;97 SUBB A,#data 从A 中减去立即数和进位 2 1 94INC A A加1 1 1 04INC Rn 寄存器加 1 1 1 08—0F INC data 直接字节加 1 2 1 05INC @Ri 间接RAM 加1 1 1 06;07 INC DPTR 数据指针加 1 1 2 A3 DEC A A减1 1 1 14 DEC Rn 寄存器减 1 1 1 18—1F DEC data 直接字节减 1 2 1 15 DEC @Ri 间接RAM 减1 1 1 16;17 MUL AB A乘B 1 4 A4DIV AB A被B除 1 4 84DA A A十进制调整 1 1 D44.转移指令(22条)AJMP addr 11 绝对转移 2 2 *1 LJMP addr 16 长转移 3 2 02 SJMP rel 短转移 2 2 80 JMP @A+DPTR 相对于DPTR 间接转移 1 2 73JZ rel 若A=0 则转移 2 2 60JNZ rel 若A≠0 则转移 2 2 70JC rel 若C=1 则转移 2 2 40 JNC rel 若C≠1 则转移 2 2 50JB bit,rel 若直接位=1 则转移 3 2 20 JNB bit,rel 若直接位=0 则转移 3 2 30 JBC bit,rel 若直接位=1 则转移且清除 3 2 10 CJNE A,data,rel 直接数与 A 比较,不等转移 3 2 B5 CJNE A,#data,rel 立即数与 A 比较,不等转移 3 2 B4 CJNE @Ri,#data,rel 立即数与间接RAM比较,不等转移 3 2 B6;B7 CJNE Rn,#data,rel 立即数与寄存器比较不等转移 3 2 B8—BF DJNZ Rn,rel 寄存器减 1 不为0 转移 2 2 D8—DF DJNZ data,rel 直接字节减 1 不为 0 转移 3 2 D5 ACALL addr 11 绝对子程序调用 2 2 *1 LCALL addr 16 子程序调用 3 2 12 RET 子程序调用返回 1 2 22 RETI 中断程序调用返回 1 2 32 NOP 空操作 1 1 00六.记忆方法MCS-51使用汇编语言指令,它共有44个操作码助记符,33种功能,其操作数有#data、direct、Rn、@Ri等。

相关文档
最新文档