8051系列单片机汇编语言指令速查表
第三章 8051汇编指令
6
汇编语言对不同数制的表示方式
数据的表示方式: 十进制立即数:MOV A,#123 十六进制: MOV A,#7FH 二进制: MOV A,#10011011B 直接地址的表示方式: 十进制立即数:MOV A,123 十六进制: MOV A,7FH 二进制: MOV A,10011011B
注:目的操作数都是A
39
算术运算指令
[2]. 带进位加法指令(4条)
ADDC A, direct ;(A)+(data)+(C)→(A)
ADDC A,#data ;(A)+#data +(C)→(A) ADDC A,Rn ADDC A,@Ri ;(A)+Rn+(C)→(A) ;(A)+((Ri))+(C)→(A)
例如: CLR C
CPL C
SETB P1.2 作业:写出51单片机可位寻址的专用寄存器有哪 些?
17
[7].相对寻址 以PC的内容为基址,加上给出的偏移 量作为转移地址,从而实现程序的转移。这 种寻址方式主要用于转移指令。
例如: S: MOV A,#20 ..... AJMP S
18
软件使用介绍 单片机编程软件:KEIL 电路仿真软件:PROTEUS 电路仿真软件 PCB设计软件
MOV A,#'k'
11
[2].直接寻址 指令中原操作数直接以存储单元的地址 出现。 MOV A,direct 例如: MOV A,68H
12
[3].寄存器寻址 寄存器寻址可以对8个工作寄存器R0-R7进 行操作,也可以对寄存器A、B等进行操作。 例如: MOV R1,#10 MOV A,R1 MOV R2,A
附录1 8051的指令列表_51单片机应用开发范例大全_[共4页]
附录1 8051的指令列表
为了便于查阅,现把8051的指令列表整理如下:
类
别
指令格式功能简述字节数周期
数据传送类指令MOV A,Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A,@Ri 内部RAM单元送累加器 1 1 MOV @Ri,A 累加器送内部RAM单元 1 1 MOV A,#data 立即数送累加器 2 1 MOV A,direct 直接寻址单元送累加器 2 1 MOV direct,A 累加器送直接寻址单元 2 1 MOV Rn,#data 立即数送寄存器 2 1 MOV direct,#data 立即数送直接寻址单元 3 2 MOV @Ri,#data 立即数送内部RAM单元 2 1 MOV direct,Rn 寄存器送直接寻址单元 2 2 MOV Rn,direct 直接寻址单元送寄存器 2 2 MOV direct,@Ri 内部RAM单元送直接寻址单元 2 2 MOV @Ri,direct 直接寻址单元送内部RAM单元 2 2 MOV direct2,direct1 直接寻址单元送直接寻址单元 3 2 MOV DPTR,#data16 16位立即数送数据指针 3 2 MOVX A,@Ri 外部RAM单元送累加器(8位地址) 1 2 MOVX @Ri,A 累加器送外部RAM单元(8位地址) 1 2 MOVX A,@DPTR 外部RAM单元送累加器(16位地址) 1 2 MOVX @DPTR,A 累加器送外部RAM单元(16位地址) 1 2 MOVC A,@A+DPTR 查表数据送累加器(DPTR为基址) 1 2 MOVC A,@A+PC 查表数据送累加器(PC为基址) 1 2。
51系列单片机指令表
E5direct
2
1
MOVdirect.A
累加器A送直接寻址单元
F5direct
2
I
MOVRn.#data
立即数送寄存器
78~7Fdata
2
I
MOVdirect,#data
立即数送直接寻址单元
75directdata
3
2
MOV@Ri,#data
立即数送内部RAM单元
76~77data
2
1
MOVdirect,Rn
寄存器送直接寻址单元
88~8Fdireci
2
2
MOVRn.direct
直接寻址单元送寄存器
A8~AFdirect
2
2
MOVdirect.@Ri
内部RAM单元送直接寻址单元
86~87direct
2
2
MOV@Ri,direct
直接寻址单元送内部RAM单元
A6-A7direct
DOdireci
2
2
PUSHdirect
直接寻址单元压入栈顶
COdirect
2
2
算术运算类指令
指令
功能简述
指令代码
字节
数
T
ADDA,Rn
累加器A加寄存器
28-2F
1
1
ADDA.@Ri
累器A加内部RAM单元
26-27
1
I
ADDA.direct
照加器A加直接寻址单元
25direct
2
1
ADDA.#data
盛加器A与寄存器交换
C8~CF
1
1
XCHA,@Ri
8051指令集
8051指令集資料轉移指令MOV 移動MOVC 程式記憶體移動MOVX 外部RAM和扩展I/O口与累加器A的数据传送指令PUSH 放入堆疊POP 由堆疊取回XCH 8位元交換XCHD 低4位元交換SWAP 高低4位元交換算術指令ADD 兩數相加ADDC 兩數相加再加CSUBB 兩數相減再減CINC 加一指令DEC 減一指令MUL (MUL AB乘法指令仅此一条)相乘指令,所得的16位二进制数低8位存累加器A高8位存BDIV (DIV AB 除法指令仅此一条)相除指令,所得商存A,余数存BDA (DA A 只此一条指令)調整為十進數邏輯指令ANL做AND(逻辑与)運算ORL做OR(逻辑或)運算XRL 做(逻辑异或)運算CLR 清除為0CPL 取反指令RL 不带进位左环移RLC 带进位左环移RR 不带进位右环移RRC 带进位右环移控制转移类指令JC C=1時跳JNC C=0時跳JB 位元=1時跳JNB 位元=0時跳JBC 位元=1時跳且清除此位元LCALL 长调用子程序ACALL 绝对调用子程序RET 由副程式返回RETI 由中斷副程式返回AJMP 绝对转移SJMP 相对转移JMP @A+DPTR 散转,相对DPTR的间接转移JZ A=0時跳JNZA 0時跳CJNE 二數比較,不相等時跳DJNZ 減一,不等於0時跳NOP 空操作位变量指令SETB 設定為1ORG 程序开始,规定程序的起始地址END 程序结束EQU 等值指令(先赋值后使用)例:SUM EQU 30H DB 定义字节指令DW 定义字内容DS 定义保留一定的存贮单元数目BIT 位地址符号指令例:SAM BIT P1.0RET 子程序返回指令RETI 中断子程序返回指令$ 本条指令地址算术运算指令指令说明周期ADD A,Rn A←A+Rn 12ADD A,direct A←A+direct 12ADD A,@Ri A←A+Ri 12ADD A,#data A←A+data 12ADDC A,Rn A←A+Rn+C 12ADDC A,direct A←A+direct+C 12ADDC A,@Ri A←A+Ri+C 12ADDC A,#data A←A+data+C 12SUBB A,Rn A←A-Rn-C 12SUBB A,direct A←A-direct-C 12SUBB A,@Ri A←A-Ri-C 12SUBB A,#data A←A-data-C 12INC A A←A+1 12INC Rn Rn←Rn+1 12INC direct direct←direct+1 12INC @Ri @Ri←@Ri+1 12INC DPTR DPTR←DPTR+1 12DEC A A←A-1 12DEC Rn Rn←Rn-1 12DEC direct direct←direct-1 12DEC @Ri @Ri←@Ri-1 12MUL AB 两个无符号的8位数据相乘,其中高阶8位放入B缓存器,低阶8位则放入累积器ACC 24DIV AB 两个无符号的8位数据相除,把ACC值除以B缓存器值,商数放回ACC,余数放在B 48 DA A 累加器作十进制调整 48逻辑运算指令指令说明周期ANL A,Rn A←A and Rn 12ANL A,direct A←A and direct 12ANL A,@Ri A←A and Ri 12ANL A,#data A←A and data 12ANL direct,A direct←direct and A 12ANL direct,#data direct←direct and data 24ORL A,Rn A←A or Rn 12ORL A,direct A←A or direct 12ORL A,Rn A←A or Rn 12ORL A,@Ri A←A or Ri 12ORL A,#data A←A or data 12ORL direct,A direct←direct or A 12ORL direct,#data direct←direct or data 24XRL A,Rn A←A xor Rn 12XRL A,direct A←A xor direct 12XRL A,@Ri A←A xor Ri 12XRL A,#data A←A xor data 12XRL direct,A direct←direct xor A 12XRL direct,#data direct←direct xor data 12CLR A 清除累加器 12CPL A 累加器反相 12RL A 累加器向左旋转 12RLC A 累加器和C左旋 12RR A 累加器向右旋转 12RRC A 累加器和C右旋 12SWAP A 累加器的高低四位互换 12数据转移指令指令说明周期MOV A,Rn A←Rn 12MOV A,direct A←direct 12MOV A,@Ri A←Ri 12MOV A,#data A←data 12MOV Rn,A Rn←A 12MOV Rn,direct Rn←direct 24MOV Rn,#data Rn←data 12MOV direct,A direct←A 12MOV direct,Rn direct←Rn 24MOV direct,direct direct←direct 24MOV direct,@Ri direct←Ri 24MOV direct,#data direct←data 24MOV @Ri,A Ri←A 12MOV @Ri,direct Ri←direct 24MOV @Ri,#data Ri←data 12MOV DPTR,#data 16 Ri←16bit data 24MOVC A,@A+DPTR A←程序内存的数据 24MOVC A,@A+PC A←程序内存的数据 24MOVX A,@Ri A←外部RAM的数据(8bit地址) 24 MOVX A,@DPTR A←外部RAM的数据(16bit地址) 24 MOVX @Ri,A 外部的RAM(8bit)←A 24MOVX @DPTR,A 外部的RAM(16bit)←A 24PUSH direc 推迭区←direct 24POP direc direct←堆栈区 24XCH A,Rn A和Rn互换 12XCH A,direct A和direct互换 12XCH A,@Ri A和Ri互换 12XCHD A,@Ri A和Ri的低四位互换 12位运算指令指令说明周期CLR C 清除进位旗标 12CLR bit 清除直接位 12SETB C 设定进位旗标 12SETB bit 设定直接位 12CPL C 进位旗标反相 12CPL bit 直接位反相 12ANL C,bit C←C and bit 24ANL C,/bit C←C and bit(反相) 24ORL C,bit C←C or bit 24ORL C,/bit C←C or bit(反相) 24MOV C,bit C←bit 12MOV bit,C bit←C 24JC rel 若C=1跳至rel 24JNC rel 若C=0跳至rel 24JB bit,rel 若bit=1跳至rel 24JNB bit,rel 若bit=0跳至rel 24JBC bit,rel 若bit=1跳至rel,且清除此位 24程序跳跃指令指令说明周期ACALL addr11 绝对式子程序呼叫 24LCALL addr16 远程子程序呼叫 24RET 从子程序返回 24RETI 从中断子程序返回 24AJMP addr11 绝对式跳跃 24LJMP addr16 远程跳跃 24SJMP rel 短程跳跃 24JMP @A+DPTR 间接跳跃 24JZ rel 若A=0跳至rel 24JNZ rel 若A不等于0跳至rel 24CJNE A,direct,rel 若A不等于direct跳至rel 24CJNE A,#data,rel 若A不等于data跳至rel 24CJNE Rn,#data,rel 若Rn不等于data跳至rel 24CJNE @Ri,#data,rel 若Ri不等于data跳至rel 24DJNZ Rn,rel Rn减1不等于0跳至rel 24DJNZ direct,rel direct减1不等于0跳至rel 24NOP 没动作 12缩写符号说明缩写符号说明备注Rn 缓存器R0-R7direct 8bit内部数据存储器,包括1.内部数据存储器(00-7F)的地址2.特殊功能缓存器(80-FF)的地址,如P0,PSW,TMOD..等@Ri 由缓存器R0或R1所寻址的内部RAM数据#data 8bit常数#data 16 16bit常数addr 16 16bit的目的地址,可使跳跃指令跳跃64kaddr 11 11bit的目的地址,可使跳跃指令跳跃2krel 具正负号的8位地址偏移量,用于相对地址的跳跃bit 1个bit:只所有可以位寻址的位。
单片机汇编语言指令查表
目录表1 寻址方式与相应的寻址空间 (2)1.1数据传送指令MOV (2)1.2程序存储器取数据指令MOVX,MOVC (3)1.3 数据交换指令XCH,XCHD,SWAP (3)1.4 逻辑运算指令ANL,ORL(按位进行) (4)续表1.4 逻辑运算指令XRL CLR CPL RL RLC RR RRC(按位进行) (5)1.5 控制转移指令LJMP AJMP SJMP JMP JZ JNZ CJNE (6)续表1.5 控制转移指令DJNZ LCALL ACALL RET RETI NOP (7)1.6 布尔处理(位操作)指令CLR SETB CPL ANL ORL (8)续表1.6 布尔处理(位操作)指令JC JNC JB JNB JBC (9)1.7堆栈操作指令PUSH POP (10)2.MCS-51系列单片机算术运算指令表ADD ADDC SUBB INC DEC MUL DIV DA (10)表1 寻址方式与相应的寻址空间1.1数据传送指令MOV方式 利用的变量 使用的空间寄存器 R0∽R7,A ,B ,CY ,DPTR直接寻址 direct片内RAM 低128字节特殊功能寄存器SFR寄存器间址 @Ro ,@R1 SP @R0,@R1,@DPTR片内RAM 片外RAM立即数 #data程序存储器 基址加变址 @A+PC @A+DPTR程序存储器 相对寻址 PC+rel程序存储器位寻址bit片内RAM 的20H ∽2FH 部分SFR目的操作数汇编指令机器码功能字节数 机器周期A 累加器 立即数送AMOV A ,#data 74H data data 传至A 2 1 内部RAM 或SFR 内容送AMOV A ,direct E5H direct(direct)传至A2 1 寄存器内容送AMOV A ,Rn (n=0∽7) E8H ∽EFH 11101rrr (Rn)传至A 1 1 内部RAM 内容送A MOV A ,@Ri (i=0,1) 1110011i((Ri))传至A 1 1 Direct内部RAM 或SFR立即数送内部RAM 或SFR MOV direct ,#data 75H direct data data 传至direct 3 2 内部RAM 和SFR 直接直接传送 MOV direct ,direct 85H direct direct (direct)传至direct 3 2 累加器内容送内部RAM 或SFR MOV direct ,AF5H direct(A)传至direct 2 1 寄存器内容送内部RAM 或SFR MOV direct ,Rn (n=0∽7) 10001rrr direct (Rn)传至direct 2 2 内部RAM 内容送内部RAM 或SFRMOV direct ,@Ri (i=0,1) 1000011i direct ((Ri))传至direct 2 2 Rn 寄存器立即数送寄存器 MOV Rn,#data (n=0∽7) 01111rrr data data 传至Rn 2 1 内部RAM 或SFR 内容送寄存器MOV Rn,direct (n=0∽7) 10101rrr direct (direct)传至Rn 2 2 累加器内容送寄存器MOV Rn,A (n=0∽7) 11111rrr (A)传至Rn 1 2 @Ri 内部RAM立即数送内部RAMMOV @Ri,#data (i=0,1) 0111011i data data 传至(Ri) 2 1 内部RAM 或SFR 内容送内部RAMMOV @Ri,direct (i=0,1) 1010011i direct (direct)传至(Ri) 2 2 累加器内容送内部RAM MOV @Ri,A (i=0,1) 1111011i(A)传至(Ri) 1 1 DPTR 16位立即数传送指令MOV DPTR,#data1690H dataH dataLdata16传至DPTR321.2程序存储器取数据指令MOVX ,MOVC1.3 数据交换指令XCH ,XCHD ,SWAP目的操作数汇编指令机器码功能字节数 机器周期A 外部数据存储器内容送A MOVX A ,@Ri (i=0,1) E2H E3H ((Ri))传至A 1 2 A 外部数据存储器内容送A MOVX A ,@DPTR E0H ((DPTR))传至A 1 2 @Ri 累加器内容送外部数据存储器 MOVX @Ri,A (i=0,1) F2H ,F3H A 传至(Ri) 1 2 DPTR 累加器内容送外部数据存储器 MOVX @DPTR,A F0H A 传至(DPTR) 1 2 A 以PC 为基址寄存器加变址寻址 MOVC A,@A+PC 83H ((A)+(PC))传至A 1 2 A以DPTR 为基址寄存器加变址寻址MOVC A,@A+DPTR93H((A)+(DPTR))传至A12目的操作数指令机器码 功能字节数 机器周期 A 内部RAM 或SFR 内容与累加器内容互换 XCH A,directC5H direct (A)←(direct) 2 1 A 寄存器内容与累加器内容互换 XCH A,Rn (n=1-7) 11001rrr (A)←(Rn) 1 1 A 内部RAM 内容与累加器内容互换XCH A,@Ri (i=0,1) 1100011i (A)←((Ri))1 1 A 内部RAM 低4位内容与累加器低4位内容互换XCHD A,@Ri (i=0,1) 1101011i (A)0∽3←((Ri))0∽3 1 1 A累加器高4位与低4位交换SWAP AC4H(A)0∽3←(A)4∽7111.4 逻辑运算指令ANL,ORL(按位进行)目的操作数指令机器码功能字节数机器周期逻辑与ANLA内容∧立即数ANL A ,#data54H A←(A)∧#data 2 1 A内容∧内部RAM或SFR当direct为端口地址P0∽P3时,操作数由端口锁存器读入。
8051单片机常用指令
8051单⽚机常⽤指令3.2.1数据传送与交换类指令共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为⽬的的操作数的指令;访问外部RAM的指令;读程序存储器的指9.堆栈操作3.2 分类指令在介绍各条分类指令之前,将指令中的操作数及注释中的符号说明如下。
Rn:当前指定的⼯作寄存器组中的Ro-R7(其中n=0,1,2,…,7)。
Ri:当前指定的⼯作寄存器组中的RO,R1(其中i=0,1)。
(Ri):Ri间址寻址指定的地址单元。
((Ri)):Ri间址寻址指定地址单元中的内容。
dir:8位直接字节地址(在⽚内RAM和SFR存储空间中)。
#data8:8位⽴即数。
#datal6:16位⽴即数。
addrl6:16位地址值。
addrll:11位地址值。
bit:位地址(在位地址空间中)。
rel:相对偏移量(⼀字节补码数)。
下⾯介绍各条分类指令的主要功能和操作,详细的指令操作说明及机器码形式可见附录。
3.2.1数据传送与交换类指令共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为⽬的的操作数的指令;访问外部RAM的指令;读程序存储器的指令;数据交换指令以及准栈操作指令。
9.堆栈操作PUSH dir ;SP⼗1-6P,(dir)⼀(SP)POP dir ;((SP))⼀dir,SP-1--P ,例1 SP=07H,(35H)=55H,指令PUSH 35H执⾏后,55H送⼊08H地址单元,SP=08H。
例2 SP=13H,(13H)= 1FH,指令POP 25H执⾏后,1FH压⼊25H地址单元,SP此时为12H。
综合例把⽚内RAM中50H地址单元中的内容与40H地址单元中的内容互换。
⽅法⼀(直接地址传送法):MOV A ,50H数据传送与交换类指令是各类指令中数量最多、使⽤最频繁的⼀类指令,编程时应能⼗分熟练地灵活运⽤3.2.2算术运算类指令共有24条指令,主要包括加、减、乘、除、增量、减量和⼗进制调整等指令。
8051指令
附录3:MCS—51系列单片机的指令介绍MCS—51汇编语言共有111条指令,其中49条是单字节指令,45条是双字节指令。
在111条指令中,单周期指令64条,双周期指令45条,占用4个周期的指令2条。
关于MCS—51汇编语言指令,有大量书籍详细介绍,在此,以表格形式列出,注释简短而精练,便于读者查阅。
一些特殊符号的意义:在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写都是相当有用的。
●Rd:当前选中的寄存器区的8个工作寄存器R0~R7(d=0~7)。
●Ri:当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)。
●@:间接寄存器寻址或基址寄存器的前缀。
●M:内部数据存储单元的8位地址。
包含0~127(255)内部存储单元地址和特殊功能寄存地址。
●#n:指令中的8位常数。
●#n(16):指令中的16位常数。
●a(16):用于LCALL和LJMP指令中的16目的地地址,目的地址的空间为64kB程序存储器地址。
●a(11):用于ACALL和AJMP指令中的11目的地地址,目的地址必须放在与下条指令第一个字节同一个2kB程序存储器空间之中。
●r:8位带符号的偏移字节,用于所有的条件转移和SJMP等指令中,偏移字节对于下条指令的第一个字节开始的-128~+127范围内。
●b:内部RAM和特殊功能寄存器的直接寻址位。
1.数据传送指令数据传送指令共28条,可分为8位传送指令、16位传送指令和字节交换指令3类。
数据传送指令要点见表3。
表3 数据传送指令2.算术运算指令算术运算指令共24条,有加、减、乘、除、十进制调整5种操作,由7种操作助记符来描述,算术运算指令要点见表4。
表4 算术运算指令3.逻辑运算指令逻辑运算指令共25条,有逻辑与、或、异或、清零、取反、环移和半字节交换7种操作,由10种操作码助记符来描述。
逻辑运算指令要点见表5。
表5 逻辑运算指令4.位操作指令位操作指令共12条,有位传送、位变量更改、位变量逻辑与和位变量逻辑或4种操作,由6种操作码助记符来描述。
附录B 8051单片机指令表
2
1
XCH
A,Rn
P
1
1
XCH
A, @Ri
P
1
1
半字节交换指令
指
令
功
能
影 响 标 志
字 节
周 期
把A中的低半字节同以Ri 中的内容为地址的单元中 的低半字节相交换,高四位不变。(A)0~3←→((Ri))0~3 XCHD A, @Ri P 1 1
查表指令(从ROM中读取数据)
指 MOVC A, @A+DPTR
2
ADDC A, Rn
ADDC A, direct ADDC A, @Ri ADDC A, #data
A中的内容加上Rn中的内容再加上CY位的内容结果放 在A中。(A)←(A)+(Rn)+(CY)
A中的内容加上direct单元中的内容再加上CY位 的内容结果放在A中。(A)←(A)+(direct)+(CY) A中的内容加上以Ri中的内容为地址的单元内容,再加上 CY位,结果放在A中。(A)←(A)+((Ri))+(CY) A中的内容加上常数data再加上CY位,结果放在A中。 (A)←(A)+data+(CY)
令 远程查表指令
功
能
影 响 标 志 P
字 周 节 期
1
2
MOVC A, @A+PC
近程查表指令 P 1 2
累加器A与外部数据存储器传送数据 影 响 标 志 字 周 节 期
指
令
功
能
MOVX
A,@Ri
以Ri中的内容为地址的外部数据存储器单元中的内 容 送累加器A中。(A)←((Ri)) 以DPTR中的内容为地址的外部数据存储器单元中的 内容送累加器A中。(A)←((DPTR))
8051单片机的指令列表
1
ADDC A,#data
累加器加立即数和进位标志
2
1
ADDC A,direct
累加器加直接寻址单元和进位标志
2
1
INC A
累加器加1
1
1
INC Rn
寄存器加1
1
1
INC direct
直接寻址单元加1
2
1
INC @Ri
内部RAM单元加1
1
1
INC DPTR
数据指针加1
1
2
DA A
十进制调整
1
1
SUBB A,Rn
ORL C,bit
C逻辑或直接寻址位
2
2
ORL C,/bit
C逻辑或直接寻址位的反
2
2
JC rel
C为1转移
2
2
JNC rel
C为零转移
2
2
JB bit,rel
直接寻址位为1转移
3
2
JNB bit,rel
直接寻址为0转移
3
2
JBC bit,rel
直接寻址位为1转移并清该位
3
2
直接寻址单元或立即数
3
1
XRL A,Rn
累加器异或寄存器
1
1
XRL A,@Ri
累加器异或内部RAM单元
1
1
XRL A,#data
累加器异或立即数
2
1
XRL A,direct
累加器异或直接寻址单元
2
1
XRL direct,A
直接寻址单元异或累加器
2
1
XRL direct,#data
直接寻址单元异或立即数
8051单片机指令表
8051单片机指令表助记符指令说明字节数周期数(数据传递类指令)MOV A,Rn寄存器传送到累加器11 MOV A,direct直接地址传送到累加器21 MOV A,@Ri累加器传送到外部RAM(8地址)11 MOV A,#data立即数传送到累加器21 MOV Rn,A累加器传送到寄存器11 MOV Rn,direct直接地址传送到寄存器22 MOV Rn,#data累加器传送到直接地址21 MOV direct,Rn寄存器传送到直接地址21 MOV direct,direct直接地址传送到直接地址32 MOV direct,A累加器传送到直接地址21 MOV direct,@Ri间接RAM传送到直接地址22 MOV direct,#data立即数传送到直接地址32 MOV@Ri,A直接地址传送到直接地址12 MOV@Ri,direct直接地址传送到间接RAM21 MOV@Ri,#data立即数传送到间接RAM22 MOV DPTR,#data1616位常数加载到数据指针31 MOVC A,@A+DPTR代码字节传送到累加器12 MOVC A,@A+PC代码字节传送到累加器12 MOVX A,@Ri外部RAM(8地址)传送到累加器12 MOVX A,@DPTR外部RAM(16地址)传送到累加器12 MOVX@Ri,A累加器传送到外部RAM(8地址)12 MOVX@DPTR,A累加器传送到外部RAM(16地址)12 PUSH direct直接地址压入堆栈22POP direct直接地址弹出堆栈22XCH A,Rn寄存器和累加器交换11XCH A,direct直接地址和累加器交换21XCH A,@Ri间接RAM和累加器交换11XCHD A,@Ri间接RAM和累加器交换低4位字节11(算术运算类指令)INC A累加器加111 INC Rn寄存器加111 INC direct直接地址加121 INC@Ri间接RAM加111 INC DPTR数据指针加112 DEC A 累加器减111 DEC Rn寄存器减111 DEC direct直接地址减122 DEC@Ri间接RAM减111 MUL AB累加器和B寄存器相乘14 DIVAB累加器除以B寄存器14 DA A累加器十进制调整11 ADD A,Rn寄存器与累加器求和11 ADD A,direct直接地址与累加器求和21 ADD A,@Ri间接RAM与累加器求和11 ADD A,#data立即数与累加器求和21 ADDC A,Rn寄存器与累加器求和(带进位)11 ADDC A,direct直接地址与累加器求和(带进位)21 ADDC A,@Ri间接RAM与累加器求和(带进位)11 ADDC A,#data立即数与累加器求和(带进位)21 SUBB A,Rn累加器减去寄存器(带借位)11 SUBB A,direct累加器减去直接地址(带借位)21 SUBB A,@Ri累加器减去间接RAM(带借位)11 SUBB A,#data累加器减去立即数(带借位)21(逻辑运算类指令)ANL A,Rn寄存器“与”到累加器11 ANL A,direct直接地址“与”到累加器21ANL A,@Ri间接RAM“与”到累加器11 ANL A,#data立即数“与”到累加器21 ANL direct,A累加器“与”到直接地址21 ANL direct,#data立即数“与”到直接地址32 ORL A,Rn寄存器“或”到累加器12 ORL A,direct直接地址“或”到累加器21 ORL A,@Ri间接RAM“或”到累加器11 ORL A,#data立即数“或”到累加器21 ORL direct,A累加器“或”到直接地址21 ORL direct,#data立即数“或”到直接地址31 XRL A,Rn寄存器“异或”到累加器12 XRL A,direct直接地址“异或”到累加器21 XRL A,@Ri间接RAM“异或”到累加器11 XRL A,#data立即数“异或”到累加器21 XRL direct,A 累加器“异或”到直接地址21 XRL direct,#data立即数“异或”到直接地址31 CLR A累加器清零12 CPL A累加器求反11 RL A累加器循环左移11 RLC A带进位累加器循环左移11 RR A累加器循环右移11 RRC A带进位累加器循环右移11 SWAP A累加器高、低4位交换11 (控制转移类指令)JMP@A+DPTR相对DPTR的无条件间接转移12 JZ rel累加器为0则转移22 JNZ rel累加器为1则转移22 CJNE A,direct,rel比较直接地址和累加器,不相等转移32 CJNE A,#data,rel比较立即数和累加器,不相等转移32CJNE Rn,#data,rel比较寄存器和立即数,不相等转移22 CJNE@Ri,#data,rel比较立即数和间接RAM,不相等转移32 DJNZ Rn,rel寄存器减1,不为0则转移32 DJNZ direct,rel直接地址减1,不为0则转移32 NOP空操作,用于短暂延时11 ACALL add11绝对调用子程序22 LCALL add16长调用子程序32 RET从子程序返回12 RETI 从中断服务子程序返回12 AJMP add11无条件绝对转移22 LJMP add16无条件长转移32 SJMP rel无条件相对转移22(布尔指令)CLR C清进位位11 CLR bit清直接寻址位21 SETB C置位进位位11 SETB bit置位直接寻址位21 CPL C取反进位位11 CPL bit取反直接寻址位21 ANL C,bit直接寻址位“与”到进位位22 ANL C,/bit直接寻址位的反码“与”到进位位22 ORL C,bit直接寻址位“或”到进位位22 ORL C,/bit直接寻址位的反码“或”到进位位22 MOV C,bit 直接寻址位传送到进位位21 MOV bit,C进位位位传送到直接寻址22 JC rel如果进位位为1则转移22 JNC rel如果进位位为0则转移22 JB bit,rel如果直接寻址位为1则转移32 JNB bit,rel如果直接寻址位为0则转移32JBC bit,rel直接寻址位为1则转移并清除该位22(伪指令)ORG指明程序的开始位置DB定义数据表DW定义16位的地址表EQU给一个表达式或一个字符串起名DATA给一个8位的内部RAM起名XDATA给一个8位的外部RAM起名BIT给一个可位寻址的位单元起名END指出源程序到此为止(指令中的符号标识)Rn工作寄存器R0-R7Ri工作寄存器R0和R1@Ri间接寻址的8位RAM单元地址(00H-FFH)#data88位常数#data1616位常数addr1616位目标地址,能转移或调用到64KROM的任何地方addr1111位目标地址,在下条指令的2K范围内转移或调用Rel8位偏移量,用于SJMP和所有条件转移指令,范围-128~+127 Bit片内RAM中的可寻址位和SFR的可寻址位Direct直接地址,范围片内RAM单元(00H-7FH)和80H-FFH $指本条指令的起始位置。
d附录3:部分新型8051兼容单片机性能速查表
附录3:
部分新型8051兼容单片机性能速查表
在世界上8位单片机诞生后不久,8051的出现了,由于8051在当时8位单片机中的突出性能,它成为事实上的工业标准。
由于Intel公司的技术开放和8051的经典体系结构、良好的兼容性,众多的半导体厂商都热衷于8051及其兼容单片机的发展,特别是近几年来,随着微电子技术与计算机技术的迅猛发展,8051及其兼容单片机的发展日新月异、品种繁多,令人目不暇接。
8051及其兼容单片机的生产厂商各施绝技,生产出各具特色的8051及其兼容单片机,概括说来,新型的8051及其兼容单片机有如下的特点或功能:1.高速度;
2.混合(模拟与数字)信号处理;
3.低功耗;
4.多时钟和实时时钟;
5.大容量存储器;
6.大数量的I/O口和多功能、可配置I/O口;
7.基于串口或JTAG结构的在系统调试;
8.多种复位源;
9.片内可编程门阵列和系统可配置;
10.多种串口;
11.DMA功能;
12.USB接口;
13.视频(电视)信号处理与控制;
14.网络接口;
……
由于与8051兼容的单片机品种繁多,限于篇幅,要介绍所有新型的与8051兼容单片机是不可能的,而要重点介绍若干个品种,既有难以取舍的窘迫,又有挂一漏万之嫌。
即使是仅介绍这些新型的单片机的特点,恐怕也难在一本书中叙述清楚。
作者只好把所收集的与8051兼容的单片机及其特点整理成表格,作为附录供大家在开发选型时参考。
应该说明的是,该表格不可能把所有的与8051兼容的单片机都收入到,所列特点也仅仅是概括性的,不可能把所有的技术指标都给列出。
下表列出了与8051兼容的单片机的生产公司、信号及其特点与主要技术指标。
8051单片机汇编指令集
将直接地址的内容加1 将间接地址的内容加1 数据指针寄存器值加1
当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位 将累加器的值减1 将寄存器的值减1 将直接地址的内容减1 将间接地址的内容减1 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节 存回B寄存器
指令 算数运算指令 1.ADD A,Rn 2.ADD A,direct 3.ADD A,@Ri 4.ADD A,#data 5.ADDC A,Rn 6.ADDC A,direct 7.ADDC A,@Ri 8.ADDC A,#data 9.SUBB A,Rn 10.SUBB A,direct 11.SUBB A,@Ri 12.SUBB A,0data 13.INC A 14.INC Rn
2 2 3 2 1 2 1 2 2 2 3 2 2 2 1 2 2 2 2 2 3 2 3 2
107.CJNE @Rn,#data,rel 3 2 108.CJNE @Ri,#data,rel 3 2 109.DJNZ Rn,rel 110.DJNZ direct,rel 111.NOP 2 2 3 2 1 1
A) 7-4←(A)7-4+6 将累加器的值与寄存器的值做AND的逻辑判断,结果存回累加器 将累加器的值与直接地址的内容做AND的逻辑判断,结果存回累加器 将累加器的值与间接地址的内容做AND的逻辑判断,结果存回累加器 将累加器的值与常数做AND的逻辑判断,结果存回累加器 将直接地址的内容与累加器的值做AND的逻辑判断,结果存回该直接地址 将直接地址的内容与常数值做AND的逻辑判断,结果存回该直接地址 将累加器的值与寄存器的值做OR的逻辑判断,结果存回累加器 将累加器的值与直接地址的内容做OR的逻辑判断,结果存回累加器 将累加器的值与间接地址的内容做OR的逻辑判断,结果存回累加器 将累加器的值与常数做OR的逻辑判断,结果存回累加器 将直接地址的内容与累加器的值做OR的逻辑判断,结果存回该直接地址 将直接地址的内容与常数值做OR的逻辑判断,结果存回该直接地址 将累加器的值与寄存器的值做XOR的逻辑判断,结果存回累加器
51单片机指令速查
51单片机速查指令AC|辅助进位。
程序状态寄存器PSW的D6位;当进行加(或减)法运算时.如果低半字节D3向高半字节进(或借)位ACALL|■ACALL addr11 子程序调用;地址11位;2字节2周期。
ACC|累加器AADD|■ADD A,#data 加法指令;data+A→A ■ADD A,direct ■ADD A,Rn ■ADD A,@Ri ADDC|■ADDC A,#data 带进位位的加法指令;data+A+C→A ■ADDC A,direct ■ADDC A,Rn ■ADDC A,@RiAJMP|■AJMP addr11 短转移指令;地址为11位;addr11→PC;2字节2周期。
ANL|■ANL A,direct 逻辑与操作指令;A∧(direct)→A ■ANL direct,#data ■ANL A,#data ■ANL A,Rn ■ANL direct,A ■ANL A,@Ri ■ANL C,bit 位逻辑运算;C∧bit→C ■ANL C,/bit 把指定位取反后再和CY执行与操作。
B|寄存器B,主要用于乘法和除法运算,也可以当作一般寄存器。
C|进位位CY,是程序状态寄存器PSW的D7位。
CJNE|■CJNE A,direct rel 条件转移指令;如果A≠(direct)则转移,即PC+rel→PC。
■CJNE A,#data rel ■CJNE Rn,#data,rel ■CJNE @Ri,#data relCLR|■CLR A 清零指令;00H→A ■CLR C ■CLR bitCPL|■CPL A 取反指令;累加器A中的内容按位取反。
■CPL C 把C取反。
■3) CPL bit 指定位取反。
DA|■DA A 这是BCD码调整指令;单字节单周期。
DB|定义字节伪指令DEC|■DEC A 减1指令;A-1→A ■DEC direct ■DEC @Ri ■DEC RnDIV|■DIV AB 除法指令;用A中的无符号数除B中的无符号数,商放在A中,余数放在B中。
8051单片机指令大全
3 ADD A,@Ri 间接ROM 的内容加到累加器
4 ADD A,#data 立即数加到累加器
5 ADDC A,Rn 寄存器内容带进位加到累加器
6 ADDC A,direct 直接地址单元的内容带进位加到累加器
16 MOV DRTR,#dat16 16 位立即数送入地址寄存器
17 MOVC A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器
18 MOVC A,@A+PC 以PC 为基地址变址寻址单元中的数据送入累加器
19 MOVX A,@Ri 外部RAM(8 位地址)送入累加器
6 ANL direct,#data 直接地址单元与立即数相“与”
7 ORL A,Rn 累加器与寄存器相“或”
8 ORL A,direct 累加器与直接地址单元相“或”
9 ORL A,@Ri 累加器与间接RAM 单元单元相“或”
10 ORL A,#data 累加器与立即数相“或”
单片机汇编指令大全
1 MOV A,Rn 寄存器内容送入累加器
2 MOV A,direct 直接地址单元中的数据送入累加器
3 MOV A,@Ri 间接RAM 中的数据送入累加器
4 MOV A,#tata 立即数送入累加器
5 MOV Rn,A 累加器内容送入寄存器
6 MOV Rn,direct 直接地址单元中的数据送入寄存器
7 MOV Rn,#data 立即数送入寄存器
8 MOV direct,A 累加器内容送入直接地址单元
9 MOV direct,Rn 寄存器内容送入直接地址单元
8051指令周期表
8051指令周期表类别指令格式功能简述字节数机器周期数据传送类指令期MOV A, Rn(Rn)→(A)Rn中的内容送到累加器A中,Rn=R0-R711 MOV Rn,A(A)→(Rn)累加器A中的内容送到寄存器Rn中。
11 MOV A, @Ri((Ri))→(A)Ri内容指向的地址单元中的内容送到累加器A,Ri=R0或R111 MOV @Ri,A(A)→((Ri))累加器A中的内容送到以Ri中的内容为地址的RAM单元。
11 MOV A,#data#data→(A)立即数送到累加器A中。
21 MOV A,data(data)→(A)直接单元地址中的内容送到累加器A21 MOV data,A(A) →(data)累加器A中的内容送直接单元地址。
21 MOV Rn,#data#data→(Rn)立即数直接送到寄存器Rn中。
21 MOV data,#data#data→(data)立即数送直接寻址单元。
32 MOV @Ri,#data#data→((Ri))立即数送到以Ri中的内容为地址的RAM单元。
21 MOV data,Rn(Rn)→(data)寄存器中的内容送直接寻址单元。
22 MOV Rn,data(data)→(Rn)直接寻址单元中的内容送寄存器。
22 MOVdata, @Ri((Ri))→(data)内部RAM单元送直接寻址单元。
22 MOV @Ri,data(data)→((Ri))直接寻址单元送内部RAM单元。
22 MOVdata2,data1(data1)→(data2)直接寻址单元中的内容送直接寻址单元。
32MOV DPTR,#data16#dataH→(DPH),#dataL→(DPL)16位常数的高8位送到DPH,低8位送到DPL32MOVX A, @Ri((Ri))→(A)寄存器Ri指向片外RAM地址中的内容送到累加器A中。
12MOVX @Ri,A(A)→((Ri))累加器中的内容送到寄存器Ri指向片外RAM地址中。
单片机8051指令
8051指令系统汇总表启动及中断入口地址0000HRESETINT0003H0000BHT/C0INT0013H1001BHT/C10023H串口1002BH仅8032(8052)有0033HPF1(电源故障)__DS80C320003BH串口2...0043HINT2INT004BH30053HINT4INT005BH50063HWDTI__看门狗进位辅助进位用户寄存器选择符号运算出错标志奇偶标志标志 0 0 0 1=奇0 1 1 0=偶1 0 21 1 3TMOD89HPCON87H位地址(符号地址)字节地址SFR寻址MSB位地址LSBSRF寄存器IE0及IE1在中断返回前应清除(CLR IE0(IE1))。
RAM 访问时间选择 WD1 WD0 复位时间0 0 0 2机器周期0 0 217+5120 0 1 3机器周期(缺省) 0 1 220+5120 1 0 4机器周期 1 0 223+5120 1 1 5机器周期 1 1 226+512 1 0 0 6机器周期 1 0 1 7机器周期 1 1 0 8机器周期 1 1 1 9机器周期扩展中断使能DOG INT5 INT4 INT3 INT2WDIF—看门狗中断标志WDRF—看门狗计数器复位标志EWT-—使能看门狗计数器复位RWT---复位看门狗计数器指令表中的定义如下:Ri=R0及R1;Rn=R0--R7;direct=内部RAM;data=立即数(单字节或双字节)。
8051指令表
MOV A , RnMOV A , direct MOV A , @Ri MOV A , #data MOV Rn , AMOV Rn , direct MOV Rn , #data MOV direct , A MOV direct , RnMOV direct , direct2MOV direct , @Ri MOV direct , #data MOV @Ri , AMOV @Ri , direct MOV @Ri , #data MOV DPTR , #addr16XCH A , RnXCH A , direct XCH A , @Ri XCHD A , @Ri SWAP APUSH direct POP directMOVX A , @DPTR MOVX A , @Ri MOVX @DPTR , A MOVX @Ri , A MOVC A ,@A +PC MOVC A ,@A +DPTRADD A , RnADD A , direct ADD A , @Ri ADD A , #data ADDC A , RnADDC A , direct ADDC A , @Ri ADDC A , #data INC A INC RnINC direct INC @Ri INC DPTR DA ASUBB A , RnSUBB A , direct SUBB A , @Ri SUBB A , #data DEC A DEC RnDEC direct DEC @Ri MUL AB DIV AB AJMP addr11SJMP rel LJMP addr16JMP @A+DPTRCLR A CPL A RL A RLC A RR A RRC AANL A , RnANL A , direct ANL A , @Ri ANL A , #data ANL direct , AANL direct , #data ORL A , RnORL A , direct ORL A , @Ri ORL A , #data ORL direct , AORL direct , #data XRL A , RnXRL A , direct XRL A , @Ri XRL A , #data XRL direct , AXRL direct , #data ACALL addr11LCALL addr16RET RETIMOV C , bit MOV bit , C CLR C CLR bit SETB C SETB bit CPL C CPL bitANL C , bit ANL C , \bit ORL C , bit ORL C , \bit NOPJB bit , rel JNB bit , rel JBC bit , relDJNZ Rn , relDJNZ direct , rel CJNE A , direct , rel CJNE A , #data , rel CJNE Rn , #data , rel CJNE @Ri , #data , rel JZ rel JNZ rel JC relJNC rel位操作类条件跳转类MOV C , bit MOV bit , C CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C , bit ANL C , \bit ORL C , bit ORL C , \bitNOPJB bit , rel JNB bit , rel JBC bit , rel DJNZ Rn , rel DJNZ direct , rel CJNE A , direct , rel CJNE A , #data , rel CJNE Rn , #data , rel CJNE @Ri , #data , rel JZ rel JNZ rel JC rel JNC rel逻辑运算类CLR A CPL A RL A RLC A RR A RRC A ANL A , Rn ANL A , direct ANL A , @Ri ANL A , #data ANL direct , A ANL direct , #data ORL A , Rn ORL A , direct ORL A , @Ri ORL A , #data ORL direct , A ORL direct , #data XRL A , Rn XRL A , direct XRL A , @Ri XRL A , #data XRL direct , A XRL direct , #dataACALL addr11LCALL addr16RET RETI调用返回类数据传送类MOV A , Rn MOV A , direct MOV A , @Ri MOV A , #data MOV Rn , A MOV Rn , direct MOV Rn , #data MOV direct , A MOV direct , Rn MOV direct , direct2MOV direct , @Ri MOV direct , #data MOV @Ri , A MOV @Ri , direct MOV @Ri , #data MOV DPTR , #addr16XCH A , Rn XCH A , direct XCH A , @Ri XCHD A , @Ri SWAP A PUSH direct POP directMOVX A , @DPTR MOVX A , @Ri MOVX @DPTR , A MOVX @Ri , A MOVC A ,@A +PC MOVC A ,@A +DPTR指令寻址空间说明算术运算类ADD A , Rn ADD A , direct ADD A , @Ri ADD A , #data ADDC A , Rn ADDC A , direct ADDC A , @Ri ADDC A , #data INC A INC Rn INC direct INC @Ri INC DPTR DA ASUBB A , Rn SUBB A , direct SUBB A , @Ri SUBB A , #data DEC A DEC Rn DEC direct DEC @Ri MUL AB DIV ABAJMP addr11SJMP rel LJMP addr16JMP @A+DPTR无条件跳转类0x00。
8051单片机汇编指令速查表分解
8051系列单片机汇编语言指令速查表说明:1)Ri, Rn指当前工作寄存器,i,n = 0 – 7,当前工作寄存器由程序状态字寄存器PSW的2个位RS1, RS0决定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 operation交换XCH-Exchange 加法ADD-Addition乘法MUL-Multiplication 除法DIV-Division左环移RL-Rotate left 进位左环移RLC-Rotate left carry右环移RR-Rotate right 进位右环移RRC-Rotate right carry3、功能模块记忆法单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为2~3组。
这样,化整为零,各个击破,实现快速记忆。
1)数据传送组。
2)加减运算组MOV 内部数据传送ADD 加法MOVC 程序存储器传送ADDC 带进位加法MOVX 外部数据传送SUBB 带进位减法3)逻辑运算组。
4)子程序调用组。
ANL 逻辑与LCALL 长调用ORL 逻辑或ALALL 绝对调用XRL 逻辑异或RET 子程序返回二、指令的记忆方法1、指令操作数的有关符号MCS-51的寻址方式共有七种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变址寻址、相对寻址、位寻址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据指针寄存器DPTR内的值自加1
47
减1指令
DEC A
累加器A的值自减1
48
DEC Rn
寄存器Rn的值自减1
49
DEC direct
direct地址单元内的值自减1
50
DEC @Ri
寄存器Ri内为RAM地址,该地址单元内的值自减1
51
乘法
MUL AB
累加器A与寄存器B内的值相乘,乘积的高8位保存在B寄存器,低8位保存在累加器A中
110
位取反
CPL
C
将Cy取反
111
CPL
bit
将bit位地址的值取反
说明:
Ri, Rn指当前工作寄存器,i=0,1;n = 0 – 7,当前工作寄存器由程序状态字寄存器PSW的2个位RS1, RS0决定
寄存器Ri内为片外RAM地址,将该地址单元内的数据送累加器A
25
MOVX @Ri, A
寄存器Ri内为片外RAM地址,将累加器A内数据送该地址单元
26
与ROM传送
MOVC A, @A+DPTR
A+DPTR构成ROM地址,将该地址内的数据送累加器A内
27
MOVC A, @A+PC
A+PC构成ROM地址,将该地址内的数据送累加器A内
52
除法
DIV AB
累加器A的值除以寄存器B的值,商保存在累加器A中,余数保存在B寄存器
53
二-十进制调整
DA A
对累加器A的结果进行十进制调整
逻辑运算指令
54
逻辑与
ANL A, Rn
将累加器A的值和寄存器Rn的值进行与操作,结果保存到累加器A中
55
ANL A, direct
将累加器A的值和direct地址单元内的值进行与操作,结果保存到累加器A中
8051系列单片机汇编语言指令速查表
编号
指令名称
指令助记符
指令说明
数据传送类指令
1
一般传送
MOV A, #data
将立即数#data送累加器A
2
MOV direct, #data
将立即数#data送片内RAM direct地址单元内
3
Mov Rn,#data
将立即数#data送寄存器Rn
4
Mov @Ri, #data
62
ORL A, @Ri
寄存器Ri内为RAM地址,将累加器A的值和该地址单元内的值进行或操作,结果保存到累加器A中
63
ORL A, #data
将累加器A的值和立即数进行或操作,结果保存到累加器A中
64
ORL direct, A
将累加器A的值和direct地址单元内的值进行或操作,结果保存到direct地址单元内
68
XRL A, @Ri
寄存器Ri内为RAM地址,将累加器A的值和该地址单元内的值进行异或操作,结果保存到累加器A中
69
XRL A, #data
将累加器A的值和立即数进行异或操作,结果保存到累加器A中
70
XRL direct, A
将累加器A的值和direct地址单元内的值进行异或操作,结果保存到direct地址单元内
41
SUBB A, #data
将累加器A的数据减去立即数,再减去进位标志内的值后,结果保存到累加器A
42
加1指令
INC A
累加器A的值自加1
43
INC Rn
寄存器Rn的值自加1
44
INC direct
direct地址单元内值自加1
45
INC @Ri
寄存器Ri内为RAM地址,该地址单元内的值自加1
46
32
ADD A, @Ri
寄存器Ri内位地址,将该地址单元内的数据与累加器A的数据相加后结果保存到累加器A
33
ADD A, #data
将立即数与累加器A的数据相加后结果保存到累加器A
34
带进位加法
ADDC A, Rn
将寄存器Rn与累加器A的数据相加,再加上进位标志内的值后,结果保存到累加器A
35
ADDC A, direct
28
栈操作
PUSH direct
堆栈指针SP自加1后,将direct地址单元的数据压进堆栈,
29
POP direct
堆栈的数据送direct地址单元中,后堆栈指针减1,
算术运算指令
30
加法指令
ADD A, Rn
将寄存器Rn与累加器A的数据相加后,结果保存到累加器A
31
ADD A, direct
将direct地址单元内的数据与累加器A的数据相加后结果保存到累加器A
80
LJMP addr16
将addr16的16位地址送程序计数器PC,使机器执行下一条指令时无条件转移到addr16处执行程序
81
JMP @A+DPTR
目标地址的基地址放在DPTR中,目标地址对基地址的偏移量放在累加器A中,它们相加构成目标地址
82
条件转移
JZ rel
If(累加器A=0)则PC加2再加上rel作为目标地址
If(寄存器Rn的值!=立即数)则PC加3再加上rel作为目标地址
87
CJNE @Ri, #data, rel
寄存器Ri内为RAM地址,If(该地址单元的值!=立即数)则PC加3再加上rel作为目标地址
88
循环转移
DJNZ Rn, rel
寄存器Rn的值减1后,If(寄存器Rn的值!=0)则PC加2再加上rel作为目标地址
56
ANL A, @Ri
寄存器Ri内为RAM地址,将累加器A的值和该地址单元内的值进行与操作,结果保存到累加器A中
57
ANL A, #data
将累加器A的值和立即数进行与操作,结果保存到累加器A中
58
ANL direct, A
将累加器A的值和direct地址单元内的值进行与操作,结果保存到direct地址单元内
寄存器Ri内为RAM地址,将立即数#data送该地址单元内
5
Mov direct2, direct1
将direct1地址单元的数据送direct2地址单元内
6
Mov direct, rn
将Rn的数据送direct地址单元内
7
Mov Rn, direct
将direct地址单元内的数据送Rn寄存器
8
Mov direct, @Ri
83
JNZ
rel
If(累加器A!=0)则PC加2再加上rel作为目标地址
84
CJNE A, direct, rel
If(累加器A!= direct地址单元的值)则PC加3再加上rel作为目标地址
85
CJNE A, #data, rel
If(累加器A!=立即数)则PC加3再加上rel作为目标地址
86
CJNE Rn, #data, rel
将direct地址单元内的数据与累加器A的数据相加,再加上进位标志内的值后,结果保存到累加器A
36
ADDC A, @Ri
寄存器Ri内为RAM地址,将该地址单元内的数据与累加器A的数据相加,再加上进位标志内的值后,结果保存到累加器A
37
ADDC A, #data
将立即数与累加器A的数据相加,再加上进位标志内的值后结果保存到累加器A
A
累加器A的值带进位循环右移1位77带进位左移RLC
A
累加器A的值带进位循环左移1位
控制转移指令
78
无条件转移
SJMP rel
rel为地址偏移量,PC加2后的地址加上rel作为目标地址,程序跳到目标地址继续运行
79
AJMP addr11(a10- a0)
addr11为11位地址,PC加2后的地址高5位与指令中的低11位地址构成目标地址,程序跳到目标地址继续运行
21
XCHD A, @Ri
寄存器Ri内为RAM地址,将该地址单元内的数据低4位与A内的低4位交换
22
与外部RAM传送
MOVX @DPTR, A
将累加器A的数据送数据指针DPTR寄存器所指外部RAM地址单元内
23
MOVX A , @DPTR
将DPTR寄存器所指外部RAM地址单元内的数据送累加器A
24
MOVX A, @Ri
89
DJNZ direct, rel
Direct地址单元的值减1后,If(该值!=0)则PC加3再加上rel作为目标地址
90
布尔条件转移
JC
rel
If(CY=1)则PC加2再加上rel作为目标地址
91
JNC
rel
If(CY=0)则PC加2再加上rel作为目标地址
92
JB bit, rel
If(bit位=1)则PC加3再加上rel作为目标地址
93
JNB bit, rel
If(bit位=0)则PC加3再加上rel作为目标地址
94
JBC bit, rel
If(bit位=1)则PC加3再加上rel作为目标地址,且bit位清0
95
调用指令
ACALL addr11
addr11为11位地址,PC加2后的地址PUSH进堆栈,再将PC的地址高5位与指令中的低11位地址构成目标地址,程序跳到目标地址继续运行
寄存器Ri内为RAM地址,将该地址单元内的数据送direct地址单元内
9
Mov @Ri, direct
寄存器Ri内为RAM地址,将direct地址单元内的数据送该地址单元内
10
Mov A, Rn
将寄存器Rn内的数据送累加器A