ORG 0000H
NOP  ;空操作指令
AJMP L0003 ;绝对转移指令
L0003: LJMP L0006 ;长调用指令
L0006: RR A ;累加器A内容右移 (先置A88H)
INC A ; 累加器A 内容加1
INC 01H ;直接地址(字节01H)内容加1
INC @R0 ; R0的内容 (为地址) 的内容即间接RAM1
;(R0=02H,02H=03H,单步执行后02H=04H)
INC @R1 ; R1的内容 (为地址) 的内容即间接RAM1
;(R1=02H,02H=03H,单步执行后02H=04H)
INC R0 ; R0的内容加1 (R000H,单步执行后查R0内容为多少)
INC R1 ; R1的内容加1(R101H,单步执行后查R1内容为多少)
INC R2 ; R2的内容加1 (R202H,单步执行后查R2内容为多少)
INC R3 ; R3的内容加1(R303H,单步执行后查R3内容为多少)
INC R4 ; R4的内容加1(R404H,单步执行后查R4内容为多少)
INC R5 ; R5的内容加1(R505H,单步执行后查R5内容为多少)
INC R6 ; R6的内容加1(R606H,单步执行后查R6内容为多少)
INC R7 ; R7的内容加1(R707H,单步执行后查R7内容为多少)
JBC 20H,L0017; 如果位(20H,24H0)1,则转移并清0该位
L0017: ACALL S0019 ;绝对调用
S0019: LCALL S001C ;长调用
S001C: RRC A ;累加器A的内容带进位位右移(A=11H,C=0
;单步执行后查AC内容为多少)
DEC A ;A的内容减1
DEC 01H ;直接地址(01H)内容减1
DEC @R0 ;R0间址减1,R0的内容为地址,该地址的内容减1
DEC @R1 ; R1间址减1
DEC R0 ; R0内容减1
DEC R1 ; R1内容减1
DEC R2 ; R2内容减1
DEC R3 ; R3内容减1
DEC R4 ; R4内容减1
DEC R5 ; R5内容减1
DEC R6 ; R6内容减1
DEC R7 ; R7内容减1
JB 20H,L002D;如果位(20H,24H0)1则转移
L002D: AJMP L0017 ;绝对转移
RET  ;子程序返回指令
RL A ;A左移
ADD A,#01H ;A的内容与立即数(01H)相加
ADD A,01H ; A的内容与直接地址 (01H内容)相加
ADD A,@R0 ; A的内容与寄存器R0的间址内容相加
ADD A,@R1 ; A的内容与寄存器R1的间址内容相加
ADD A,R0 ; A的内容与寄存器R0的内容相加
ADD A,R1 ; A的内容与寄存器R1的内容相加
ADD A,R2 ; A的内容与寄存器R2的内容相加
ADD A,R3 ; A的内容与寄存器R3的内容相加
ADD A,R4 ; A的内容与寄存器R4的内容相加
ADD A,R5 ; A的内容与寄存器R5的内容相加
ADD A,R6 ; A的内容与寄存器R6的内容相加
ADD A,R7 ; A的内容与寄存器R7的内容相加
JNB 30H,L0041 ;直接位(30H)0相对转移
L0041: ACALL S0100 ;绝对调用
RETI  ;中断返回指令
RLC A ;带进位位左移
ADDC A,#02H ;A带进位位与立即数(#02H)相加
ADDC A,02H ; A带进位位与直接地扯(02H内容)相加
ADDC A,@R0 ; A带进位位与R0间扯内容相加
ADDC A,@R1 ; A带进位位与R1间扯内容相加
ADDC A,R0 ; A带进位位与R0内容相加
ADDC A,R1 ; A带进位位与R1内容相加
ADDC A,R2 ; A带进位位与R2内容相加
ADDC A,R3 ; A带进位位与R3内容相加
ADDC A,R4 ; A带进位位与R4内容相加
ADDC A,R5 ; A带进位位与R5内容相加
ADDC A,R6 ; A带进位位与R6内容相加
ADDC A,R7 ; A带进位位与R7内容相加
JC L0095 ;进位为1转移
NOP 
AJMP L0017 ;绝对转移
ORL 02H,A ;直接地址内容与A
ORL 02H,#02H ; 直接地址内容与立即数或
ORL A,#44H ;A与立即数或
ORL A,02H ; A与直接地址内容或
ORL A,@R0 ; AR0间址内容或
ORL A,@R1 ; AR1间址内容或
ORL A,R0 ; AR0内容或
ORL A,R1 ; AR1内容或
ORL A,R2 ; AR2内容或
ORL A,R3 ; AR3内容或
ORL A,R4 ; AR4内容或
ORL  A,R5 ; AR5内容或
ORL A,R6 ; AR6内容或
ORL A,R7 ; AR7内容或
JNC L0017 ;进位为0转移
ACALL L0017 ;绝对调用
ANL 02H,A ; 直接地址与A
ANL 02H,#02H ; 立即数与直接地址与
ANL A,#02H ; A与立即数与
ANL A,02H ;A与直接地址与
ANL A,@R0 ; AR0间址与
ANL A,@R1 ; AR1间址与
ANL A,R0 ; AR0
ANL A,R1 ; AR1
ANL A,R2 ; AR2
ANL A,R3 ; AR3
ANL A,R4 ; AR4
ANL A,R5 ; AR5
ANL A,R6 ; AR6
ANL A,R7 ; AR7
JZ L0084 ;A为零转移
L0084: AJMP L0017 ;绝对转移
XRL 01H,A ;直接地址与A异或
XRL 02H,#01H ; 直接地址与立即数异或
XRL A,#01H ;A与立即数异或
XRL A,01H ; A与直接地址异或
XRL A,@R0 ; AR0间址址异或
XRL A,@R1 ; AR1间址址异或
XRL A,R0 ; AR0异或
XRL A,R1 ; AR1异或
XRL A,R2 ; AR2异或
XRL A,R3 ; AR3异或
XRL A,R4 ; AR4异或
L0095: XRL A,R5 ; AR5异或
XRL A,R6 ; AR6异或
XRL A,R7 ; AR7异或
JNZ L0084 ;A不为零转
L009A: ACALL L0084 ;绝对调用
ORL C,01H ;直接位或到进位
JMP @A+DPTR;相对于DPTR间接转
MOV A,#01H ;立即数送A
MOV 01H,#02H ;立即数送直接地址
MOV @R0,#01H ;立即数送间址R0
MOV @R1,#02H ; 立即数送间址R1
MOV R0,#01H ; 立即数送R0
MOV R1,#01H ; 立即数送R1
MOV R2,#01H ; 立即数送R2
MOV R3,#01H ; 立即数送R3
MOV R4,#01H ; 立即数送R4
MOV R5,#01H ; 立即数送R5
MOV R6,#01H ; 立即数送R6
MOV R7,#01H ; 立即数送R7
SJMP L00BA ;短转移
L00BA: AJMP L0095 ;绝对转移
ANL C,02H ;直接地址与进位与
ORG 00C0H ;
MOV 02H,01H ;直接地址送直接地址
MOV 01H,@R0;间址R0送直接地址
MOV 01H,@R1; 间址R1送直接地址
MOV 01H,R0 ; R0送直接地址
MOV 01H,R1 ; R1送直接地址
MOV 01H,R2 ; R2送直接地址
MOV 01H,R3 ; R3送直接地址
MOV 01H,R4 ; R4送直接地址
MOV 01H,R5 ; R5送直接地址
MOV  01H,R6 ; R6送直接地址
MOV 01H,R7 ; R7送直接地址
NOP
MOV DPTR,#1234H;建立数据指针地址为1234H
ACALL L00BA ;绝对调用
MOV 03H,C ;进位送03H(20H03)
MOVC A,@A+DPTR ;A+DPTR寻扯的程序存贮器字节送A
SUBB A,#01H ;A减去立即数和进位位
SUBB A,02H ; A减去直接地址内容和进位位
SUBB A,@R0 ; A减去R0间接RAM和进位位
SUBB A,@R1 ; A减去R1间接RAM和进位位
SUBB A,R0 ; A减去R0和进位位
SUBB A,R1 ; A减去R1和进位位
SUBB A,R2 ; A减去R2和进位位
SUBB A,R3 ; A减去R3和进位位
SUBB A,R4 ; A减去R4和进位位
SUBB A,R5 ; A减去R5和进位位
SUBB A,R6 ; A减去R6和进位位
SUBB A,R7 ; A减去R7和进位位
ORL C,/00H ;直接位的反或到进位
AJMP L0084 ;绝对转移
MOV C,03H ;直接位数送进位
INC DPTR ;数据指针加1
MUL AB ;A乘以B
NOP ;A5H为二字节空操作指令
NOP
MOV @R0,05H ;直接字芯送R0间接RAM
MOV @R1,05H ; 直接字芯送R1间接RAM
MOV R0,05H ; 直接字芯送R0
MOV R1,05H ; 直接字芯送R1
S0100: MOV R2,05H ; 直接字芯送R2
MOV R3,05H ; 直接字芯送R3
MOV R4,05H ; 直接字芯送R4
MOV R5,05H ; 直接字芯送R5
MOV R6,05H ; 直接字芯送R6
MOV R7,05H ; 直接字芯送R7
ANL C,/04H ; 直接位的反与到进位
ACALL S0100 ;绝对调用
CPL  04H ;直接位取反
CPL C ;进位取反
CJNE A,#01H,L0139 ;立即数与A比较,不相等则转移
CJNE A,01H,L0139 ; 直接字节与A比较,不相等则转移
CJNE @R0,#01H,L0139 ; 立即数与R0间接RAM比较,不相等则转移
CJNE @R1,#01H,L0139 ; 立即数与R1间接RAM比较,不相等则转移
CJNE R0,#01H,L0139 ; 立即数与R0比较,不相等则转移
CJNE R1,#01H,L0139 ; 立即数与R1比较,不相等则转移
CJNE R2,#01H,L0139 ; 立即数与R2比较,不相等则转移
CJNE R3,#01H,L0139 ; 立即数与R3比较,不相等则转移
CJNE R4,#01H,L0139 ; 立即数与R4比较,不相等则转移
CJNE R5,#01H,L0139 ; 立即数与R5比较,不相等则转移
CJNE R6,#01H,L0139 ; 立即数与R6比较,不相等则转移
CJNE R7,#01H,L0139 ; 立即数与R7比较,不相等则转移
PUSH 00H ;直接字节进栈,SP1
L0139: AJMP L0084 ;绝对转移
CLR 04H ;直接位清零
CLR C ;清零进位
SWAP A ;A左环移四位(A的二个半字节交换)
XCH A,05H ;交换A和直接字节
XCH A,@R0 ; 交换AR0间接RAM
XCH A,@R1 ; 交换AR1间接RAM
XCH A,R0 ; 交换AR0
XCH A,R1 ; 交换AR1
XCH A,R2 ; 交换AR2
XCH A,R3 ; 交换AR3
XCH A,R4 ; 交换AR4
XCH A,R5 ; 交换AR5
XCH A,R6 ; 交换AR6
XCH A,R7 ; 交换AR7
POP 00H ;直接字节出栈,SP1
ACALL L0139 ;绝对调用
SETB 03H ;置位直接位
SETB C ;置位进位
DA A ;A的十进制加法调熊
DJNZ 01H,L0139 ;直接字节减1,不为零则转移
XCHD A,@R0 ;交换AR0间接RAM的低4
XCHD A,@R1 ; 交换AR1间接RAM的低4
L0158: DJNZ R0,L0139 ; R01,不为零则转移
DJNZ R1,L0158 ; R11,不为零则转移
DJNZ R2,L0158 ; R21,不为零则转移
DJNZ R3,L0158 ; R31,不为零则转移
DJNZ R4,L0158 ; R41,不为零则转移
DJNZ R5,L0158 ; R51,不为零则转移
DJNZ R6,L0158 ; R61,不为零则转移
DJNZ R7,L0158 ; R71,不为零则转移
MOVX A,@DPTR ;外部数据(16位地址)A
L0169: NOP
AJMP L0139 ;绝对转移
MOVX A,@R0 ;R0间址即外部数据(8位地址)A
MOVX A,@R1 ; R1间址即外部数据(8位地址)A
CLR A ;清零A
MOV A,05H ;直接字节送A
MOV A,@R0 ;R0间接RAMA
MOV A,@R1 ; R1间接RAMA
MOV A,R0 ; R0A
MOV A,R1 ; R1A
MOV A,R2 ; R2汇编table指令什么意思A
MOV A,R3 ; R3A
MOV A,R4 ; R4A
MOV A,R5 ; R5A
MOV A,R6 ; R6A
MOV A,R7 ; R7A
MOVX @DPTR,A ;A送外部数据(16位地址)
NOP
ACALL L0169 ;绝对调用
MOVX @R0,A ;AR0间址即外部数据(8位地址)
MOVX @R1,A ; AR1间址即外部数据(8位地址)
CPL A ;A取反
MOV 05H,A ;A送直接字节
MOV @R0,A ; AR0间址即间接RAM
MOV @R1,A ; AR1间址即间接RAM
MOV R0,A ; AR0
MOV R1,A ; AR1
MOV R2,A ; AR2
MOV R3,A ; AR3
MOV R4,A ; AR4
MOV R5,A ; AR5
MOV R6,A ; AR6
MOV R7,A ; AR7
END
51的汇编控制指令详细列表
8051 INSTRUCTION SET

1.Arithmetic operations:

Mnemonic Byte Cyc
ADD A,@Ri 1 1
ADD A,Rn 1 1
ADD A,direct 2 1
ADD A,#data 2 1
ADDC A,@Ri 1 1
ADDC A,Rn 1 1
ADDC A,direct 2 1
ADDC A,#data 2 1
SUBB A,@Ri 1 1
SUBB A,Rn 1 1
SUBB A,direct 2 1
SUBB A,#data 2 1
INC A 1 1
INC @Ri 1 1
INC Rn 1 1
INC DPTR 1 1
INC direct 2 1
INC direct 2 1
DEC A 1 1
DEC @Ri 1 1
DEC Rn 1 1
DEC direct 2 1
MUL AB 1 4
DIV AB 1 4
DA A 1 1
8051的汇编控制指令,占用字节,执行周期列表
3.Data transfer:
Mnemonic Byte Cyc
MOV A,@Ri 1 1
MOV DPTR,#data16 3 2
MOV A,Rn 1 1
MOVC A,@A+DPTR 1 2
MOV A,direct 2 1
MOVC A,@A+PC 1 2
MOV A,#data 2 1
MOVX A,@Ri 1 2
MOV @Ri,A 1 1
MOVX A,@DPTR 1 2
MOV @Ri,direct 2 2
MOVX @Ri,A 1 2
MOV @Ri,#data 2 1
MOVX @DPTR,A 1 2
MOV Rn,A 1 1
PUSH direct 2 2
MOV Rn,direct 2 2
POP direct 2 2
MOV Rn,#data 2 1
XCH A,@Ri 1 1
MOV direct,A 2 1
XCH A,Rn 1 1
MOV direct,@Ri 2 2
XCH A,direct 2 1
MOV direct,Rn 2 2
XCHD A,@Ri 1 1
MOV direct,direct 3 2
MOV direct,#data 3 2
8051的汇编控制指令,占用字节,执行周期列表2.
Logical opreations:
ANL A,@Ri 1 1
XRL A,@Ri 1 1
ANL A,Rn 1 1
XRL A,Rn 1 1
ANL A,direct 2 1
XRL A,direct 2 1
ANL A,#data 2 1
XRL A,#data 2 1
ANL direct,A 2 1
XRL direct,A 2 1
ANL direct,#data 3 2
XRL direct,#data 3 2
ORL A,@Ri 1 1
CLR A 1 1
ORL A,Rn 1 1
CPL A 1 1
ORL A,direct 2 1
RL A 1 1
ORL A,#data 2 1
RLC A 1 1
ORL direct,A 2 1
RR A 1 1
ORL direct,#data 3 2
RRC A 1 1
SWAP A 1 1
8051的汇编控制指令,占用字节,执行周期列表4.Boolean variable manipulation:
Mnemonic Byte Cyc
CLR C 1 1
ANL C,bit 2 2
SETB C 1 1
ANL C,/bit 2 2
CPL C 1 1
ORL C,bit 2 2
CLR bit 2 1
ORL C,/bit 2 2
SETB bit 2 1
MOV C,bit 2 1
CPL bit 2 1
MOV bit,C 2 2
8051的汇编控制指令,占用字节,执行周期列表
5.Program and machine control:
Mnemonic Byte Cyc
NOP 1 1
JZ rel 2 2
RET 1 2
JNZ rel 2 2
RETI 1 2
JC rel 2 2
ACALL addr11 2 2
JNC rel 2 2
AJMP addr11 2 2
JB bit,rel 3 2
LCALL addr16 3 2
JNB bit,rel 3 2
LJMP addr16 3 2
JBC bit,rel 3 2
SJMP rel 2 2
CJNE A,direct,rel 3 2
JMP @A+DPTR 1 2
CJNE A,#data,rel 3 2
DJNZ Rn,rel 2 2
CJNE @Ri,#data,rel 3 2
DJNZ direct,rel 3 2
CJNE Rn,#data,rel 3 2

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。