序号助 记 符
1MOV A,Rn2MOV A,direct3MOV A,@Ri4MOV A,#data5MOV Rn,A6MOV Rn,diret7MOV Rn,#data8MOV direct,A9MOV direct,Rn10MOV direct,direct11MOV direct,@Ri12MOV direct,#data13MOV @Ri,A
14MOV @Ri,direct15MOV @Ri,#data16MOV DPTR,#data1617MOV C,bit18MOV bit,C
19MOVC A,@A+DPTR2021222324252627282930313233343536373839
MOVC A,@A+PCMOVX A,@RiMOVX A,@DPTRMOVX @Ri,AMOVX @DPTR,A PUSH directPOP direct
XCH A,RnXCH A,directXCH A,@RiXCHD A,@Ri
2.逻辑运算指令(35条)ANL A,RnANL A,directANL A,@RiANL A,#dataANL direct,AANL direct,#dataANL C,bitANL C,/bitORL A,Rn
操作
1.数据传送指
A<-Rn
A<-(direct)A<-(Ri)A<-#dataRn<-A
Rn<-(diret)Rn<-#data(direct)<-A(direct)<-Rn
(direct)<-(direct)(direct)<-(Rn)(direct)<-#data(Ri)<-A
(Ri)<-(direct)(Ri)<-#dataDPTR<-#data16C<-bitbit<-C
A<-(A+DPTR)A<-(A+DPTR);PC<-PC+1A<-(Ri)A<-(DPTR)(Ri)<-A(DPTR)<-ASP<-SP+1;
(SP)<-(direct)
(direct)<-(SP); SP<-SP-1;A<-->Rn
A<-->(direct)A<-->(Ri)
A[3..0]<-->(Ri)[3..0]A<-A^Rn
A<-A^(direct)A<-A^(Ri)A<-A^#data
(direct)<-(direct)^A(direct)<-(direct)^#databit<-bit^Cbit<-/bit^CA<-A|Rn
404142434445474849505152535455565758596061626365666768697071727374757677787980818283ORL A,directORL A,@RiORL A,#dataORL direct,AORL direct,#dataORL C,bitORL C,/bitXRL A,RnXRL A,directXRL A,@RiXRL A,#dataXRL direct,AXRL direct,#dataSETB CSETB bitCLR ACLR CCLR bitCPL ACPL CCPL bitRL ARLC ARR ARRC ASWAP A
3.算术运算指令(24条)ADD A,RnADD A,directADD A,@RiADD A,#dataADDC A,RnADDC A,directADDC A,@RiADDC A,#dataSUBB A,RnSUBB A,directSUBB A,@Ri SUBB A,#dataINC AINC RnINC directINC @RiINC DPTRDEC A
A<-A|(direct)A<-A|(Ri)A<-A|#data
(direct)<-(direct)|A(direct)<-(direct)|#dataC<-C|bitC<-C|/bitA<-A⊕Rn
A<-A⊕(direct)A<-A⊕(Ri)A<-A⊕#data
(direct)<-(direct)⊕A(direct)<-(direct)⊕#dataC<-1bit<-1A<-00HC<-0bit<-0A<-/AC<-/Cbit<-/bitA<-A<<1
C A<- C A << 1A<-A>>1
C A<- C A >> 1A[3..0]<-->A[7..4]A<-A+Rn
A<-A+(direct)A<-A+(Ri)A<-A+#dataA<-A+Rn+C
A<-A+(direct)+CA<-A+(Ri)+CA<-A+#data+CA<-A-Rn-C
A<-A-(direct)-CA<-A-(Ri)-CA<-A-#data-CA<-A+1Rn<-Rn+1
(direct)<-(diret)+1(Ri)<-(Ri)+1DPTR<-DPTR+1A<-A-1
8485868788
DEC RnDEC directDEC @RiMUL ABDIV ABDA A
4.转移指令(22条)AJMP addr 11LJMP addr 16SJMP relJMP @A+DPTRJZ relJNZ relJC relJNC relJB bit,relJNB bit,relJBC bit,relCJNE A,direct,relCJNE A,#data,relCJNE @Ri,#data,relCJNE Rn,#data,relDJNZ Rn,rel DJNZ direct,rel
Rn<-Rn-1
(direct)<-(direct)-1(Ri)<-(Ri)-1BA<-A*B
A<-A/B ; B<-A%BA<-A(BCD decimal)PC<-PC+2;
PC[10..0]<-addr11PC<-PC+3;PC<-addr16PC<-PC+2;PC<-PC+relPC<-A+DPTR
PC<-PC+rel,if A = 0PC<-PC+rel,if A ≠ 0PC<-PC+rel,if C = 0PC<-PC+rel,if C≠ 0PC<-PC+rel,if bit =1PC<-PC+rel,if bit= 0PC<-PC+rel; if bit =1bit<-0;
PC<-PC+rel,if A≠(direct)PC<-PC+rel,if A≠#dataPC<-PC+rel,if (Ri)≠dataPC<-PC+rel,if (Rn)≠dataRn<-Rn - 1;
PC<-PC+rel,if Rn ≠ 0(direct)<-(direct)-1;PC<-PC+rel,if (direct)≠0PC<-PC+2;SP<-SP+1;
(SP)<-PC[7..0];SP<-SP+1;
(SP)<-PC[15..8];PC[10..0]<-addr11;PC<-PC+2;SP<-SP+1;
(SP)<-PC[7..0];SP<-SP+1;
(SP)<-PC[15..8];PC[10..0]<-addr16;PC[15..8]<-(SP);SP<-SP-1;
PC[7..0]<-(SP);SP<-SP-1;
909192939495969799100101102103104105106
ACALL addr 11107
LCALL addr 16108
RET109
RETI110111NOP
伪指令1ORG2DB3DW45678
EQUDATAXDATABITEND
符号说明RnRiaddr16addr11
PC[15..8]<-(SP);SP<-SP-1;
PC[7..0]<-(SP);SP<-SP-1;
指明程序的开始位置定义数据表
定义16位的地址表
给一个表达式或一个字符串起名字
给一个8位的内部RAM起名字给一个8位的外部RAM起名字给一个可寻址的位单元起名字指出源程序到此为止工作寄存器R0-R7工作寄存器R0和R1
16位目标地址,能够转移或调用到KROM的任何地方
11位目标地址,在下条指令的2K范围内转移或跳转
8位地址偏移量,用于SJMP和所有的条件跳转指令,范围-128 ~ +127
片内RAM中的可寻址位和SFR的可寻址位
直接地址,范围片内RAM单元(00H-7FH)和80H-FFH指本条指令的起始位置
relBitdirect$
说明
传送指令(30条)寄存器送 A 直接字节送A 间接RAM 送A 立接数送 A A 送寄存器直接数送寄存器立即数送寄存器A 送直接字节寄存器送直接字节直接字节送直接字节间接 Rn 送直接字节立即数送直接字节A 送间接 RAM
直接字节送间接RAM立即数送间接 RAM16 位常数送数据指针直接位送进位位进位位送直接位
A+DPTR 寻址程序存贮字节送 AA+PC 寻址程序存贮字节送A外部数据送A(8 位地址)外部数据送A(16 位地址)A 送外部数据(8 位地址)A 送外部数据(16 位地址)直接字节进栈道,SP 加1直接字节出栈,SP 减1寄存器与 A 交换直接字节与A 交换间接Rn 与A 交换
间接Rn 与A 低半字节交换寄存器与到A直接字节与到A间接RAM与到A立即数与到AA与到直接字节
立即数与到直接字节直接位与到进位位
直接位的反码与到进位位寄存器或到A
字节
121212222323112322311111221211121223221
周期
1111121112222121122
代 码E8--EFE5E6--E774F8--FFA8--AF78--7FF588—8F8586;8775F6;F7A6;A776;7790A29293
2832222E2;E3E0F2;F3F0
2C02D01111111112221C8—CFC5C6;C7D6;D758—5F5556;5754525382B048—4F
直接字节或到A间接RAM或到A立即数或到AA或到直接字节
立即数或到直接字节直接位或到进位位
直接位的反码或到进位位寄存器异或到A直接字节异或到A间接RAM异或到A立即数异或到AA异或到直接字节
立即数异或到直接字节进位位置 1直接位置 1A清0
进位位清 0直接位清 0A求反码进位位取反 直接位取反A循环左移一位 A 带进位左移一位A右移一位
A 带进位右移一位A 半字节交换
寄存器加到A 直接字节加到A间接RAM 加到A立即数加到A
寄存器带进位加到 A直接字节带进位加到A间接RAM 带进位加到A立即数带进位加到 A从A 中减去寄存器和进位从A 中减去直接字节和进位从A 中减去间接RAM 和进位从A 中减去立即数和进位A加1
寄存器加 1直接字节加1间接RAM 加1数据指针加1A减1
21223221212231211211211111121212121212112111
11112221111121111111111111111111111111111121
4546;4744424372A068—6F6566;676263D3D2E4C3C2F4B3B22333313C428—2F2526;272438—3F3536;373498—9F9596;97944
08—0F506;07A314
寄存器减 1直接字节减1间接RAM 减1A乘BA被B除
A十进制调整绝对转移长转移短转移
相对于DPTR 间接转移若A=0 则转移若A≠0 则转移若C=1 则转移若C≠1 则转移
若直接位=1 则转移若直接位=0 则转移若直接位=1 则转移且清除直接数与 A 比较,不等转移立即数与 A 比较,不等转移立即数与间接RAM比较,不等转移立即数与寄存器比较不等转移寄存器减 1 不为0 转移直接字节减1 不为 0 转移
12111123212222333333323
11144118—1F1516;17A484D4
2*122280222222273607040502030
2102222B5B4B6;B7B8—BF
2D8—DF2D5
绝对子程序调用22*1
子程序调用3212
子程序调用返回1222
中断程序调用返回空操作
11
23210