概述
SOURCE: CLICK HERE & HERE
助记符 | 操作码 | 说明 | 字节 | 振荡周期 |
ACALL addrll | X1* | 绝对子程序调用 | 2 | 24 |
ADD A,Rn | 28~2F | 寄存器和A相加 | 1 | 12 |
ADD A,direct | 25 | 直接字节和A相加 | 2 | 12 |
ADD A,@R | 26,27 | 间接RAM和A相加 | 1 | 12 |
ADD A,#data | 24 | 立即数和A相加 | 2 | 12 |
ADDC A,Rn | 38~3F | 寄存器、进位位和A相加 | 1 | 12 |
ADDC A,dircet | 35 | 直接字节、进位位和A相加 | 2 | 12 |
ADDC A,@R | 36,37 | 间接RAM、进位位和A相加 | 1 | 12 |
ADDC A,dircet | 34 | 立即数、进位位和A相加 | 2 | 12 |
AJMP addrll | Y1** | 绝对转移 | 2 | 24 |
ANL A,Rn | 58~5F | 寄存器和A相”与” | 1 | 12 |
ANL A,direct | 55 | 直接字节和A相”与" | 2 | 12 |
ANL A,@Ri | 56,57 | 间接RAM和A相"与" | 1 | 12 |
ANL A,#data | 54 | 立即数和A相"与" | 2 | 12 |
ANL direct,A | 52 | A和直接字节相"与" | 2 | 12 |
ANL direct,#data | 53 | 立即数和直接字节相"与" | 3 | 24 |
ANL C,bit | 82 | 直接位和进位相"与" | 2 | 24 |
ANL C,/bit | B0 | 直接位的反和进位相"与" | 2 | 24 |
CJNE A,dircet,rel | B5 | 直接字节与A比较,不相等则相对转移 | 3 | 24 |
CJNE A,#data,rel | B4 | 立即数与A比较,不相等则相对转移 | 3 | 24 |
CJNE Rn,#data,rel | B8~BF | 立即数与寄存器相比较,不相等则相对转移 | 3 | 24 |
CJNE @R,#data,rel | B6,B7 | 立即数与间接RAM相比较,不相等则相对转移 | 3 | 24 |
CLR A | E4 | A清零 | 1 | 12 |
CLR bit | C2 | 直接位清零 | 2 | 12 |
CLR C | C3 | 进位清零 | 1 | 12 |
CPL A | F4 | A取反 | 1 | 12 |
CPL bit | B2 | 直接位取反 | 2 | 12 |
CPL C | B3 | 进位取反 | 1 | 12 |
DA A | D4 | A的十进制加法调整 | 1 | 12 |
DEC A | 14 | A减1 | 1 | 12 |
DEC Rn | 18~1F | 寄存器减1 | 1 | 12 |
DEC direct | 15 | 直接字节减1 | 2 | 12 |
DEC @Ri | 16,17 | 间接RAM减1 | 1 | 12 |
DIV AB | 84 | A除以B | 1 | 48 |
DJNE Rn,rel | DB~DF | 寄存器减1,不为零则相对转移 | 3 | 24 |
DJNE direct,rel | D5 | 直接字节减1,不为零则相对转移 | 3 | 24 |
INC A | 04 | A加1 | 1 | 12 |
INC Rn | 08~0F | 寄存器加1 | 1 | 12 |
INC direct | 05 | 直接字节加1 | 2 | 12 |
INC @Ri | 06,07 | 间接RAM加1 | 1 | 12 |
INC DPTR | A3 | 数据指针加1 | 1 | 24 |
JB bit;rel | 20 | 直接位为1,则相对转移 | 3 | 24 |
JBC bit,rel | 10 | 直接位为1,则相对转移,然后该位清0 | 3 | 24 |
JC rel | 40 | 进位为1,则相对转移 | 2 | 24 |
JMP @A+DPTR | 73 | 转移到A+DPTR所指的地址 | 1 | 24 |
JNB bit,rel | 30 | 直接位为0,则相对转移 | 3 | 24 |
JNC rel | 50 | 进位为0,则相对转移 | 2 | 24 |
JNZ rel | 70 | A不为零,则相对转移 | 2 | 24 |
JZ rel | 60 | A为零,则相对转移 | 2 | 24 |
LCALL addr16 | 12 | 长子程序调用 | 3 | 24 |
LJMP addr16 | 02 | 长转移 | 3 | 24 |
MOV A,Rn | E8~EF | 寄存器送A | 1 | 12 |
MOV A,direct | E5 | 直接字节送A | 2 | 12 |
MOV A,@Ri | E6,E7 | 间接RAM送A | 1 | 12 |
MOV A,#data | 74 | 立即数送A | 2 | 12 |
MOV Rn,A | F8~FF | A送寄存器 | 1 | 12 |
MOV Rn,direct | A8~AF | 直接字节送寄存器 | 2 | 24 |
MOV Rn,#data | 78~7F | 立即数送寄存器 | 2 | 12 |
MOV direct,A | F5 | A送直接字节 | 2 | 12 |
MOV direct,Rn | 88~8F | 寄存器送直接字节 | 2 | 24 |
MOV direct,direct | 85 | 直接字节送直接字节 | 3 | 24 |
MOV direct,@Ri | 86,87 | 间接RAM送直接字节 | 2 | 24 |
MOV direct,#data | 75 | 立即数送直接字节 | 3 | 24 |
MOV @Ri,A | F6,F7 | A送间接RAM | 1 | 12 |
MOV @Ri,direct | A6,A7 | 直接字节送间接RAM | 2 | 24 |
MOV @Ri,#data | 76,77 | 立即数送间接RAM | 2 | 12 |
MOV C,bit | A2 | 直接位进位 | 2 | 12 |
MOV bit,C | 92 | 进位送直接位 | 2 | 24 |
MOV DPTR,#data16 | 90 | 16位常数送数据指针 | 3 | 24 |
MOVC A,@A+DPTR | 93 | 由A+DPTR寻直的程序存储器字节送A | 1 | 24 |
MOVC A,@A+PC | 83 | 由A+PC寻址的程序存储字节送A | 1 | 24 |
MOVX A,@Ri | E2,E3 | 外部数据存储器(8位地址)送A | 1 | 24 |
MOVX A,@DPTR | E0 | 外部数据存储器(16位地址)送A | 1 | 24 |
MOVX @Ri,A | F2,F3 | A送外部数据存储器(8位地址) | 1 | 24 |
MOVX @DPTR,A | F0 | A送外部数据存储器(16位地址) | 1 | 24 |
MUL AB | A4 | A乘以B | 1 | 48 |
NOP | 00 | 空操作 | 1 | 12 |
ORL A,Rn | 48~4F | 寄存器和A相"或" | 1 | 12 |
ORL A,direct | 45 | 直接字节和A相"或" | 2 | 12 |
ORL A,@Ri | 46,47 | 间接RAM和A相"或" | 1 | 12 |
ORL A,#data | 44 | 立接数和A相"或" | 2 | 12 |
ORL direct,A | 42 | A和直接。字节"或" | 2 | 12 |
ORL dircect,#data | 43 | 立即数和直接字节相"或" | 3 | 24 |
ORL C,bit | 72 | 直接位和进位相"或" | 2 | 24 |
ORL C,/bit | A0 | 直接位的反和进位相"或" | 2 | 24 |
POP direct | D0 | 直接字节退栈,SP减1 | 2 | 24 |
PUSH direct | C0 | SP加1,直接字节进栈 | 2 | 24 |
RET | 22 | 子程序调用返回 | 1 | 24 |
RETI | 32 | 中断返回 | 1 | 24 |
RL A | 23 | A左环移 | 1 | 12 |
RLC A | 33 | A带进位左环移 | 1 | 12 |
RR A | 03 | A右环移 | 1 | 12 |
RRC A | 13 | A带进位右环移 | 1 | 12 |
SETB bit | D2 | 直接位置位 | 2 | 12 |
SETB C | D3 | 进位置位 | 1 | 12 |
SJMP rel | 80 | 短转移 | 2 | 24 |
SUBB A,Rn | 98~F | A减去寄存器及进位位 | 1 | 12 |
SUBB A,direct | 95 | A减去直接字节及进位位 | 2 | 12 |
SUBB A,@Ri | 96,97 | A减去间接RAM及进位位 | 1 | 12 |
SUBB A,#data | 94 | A减去立即数及进位位 | 2 | 12 |
SWAP A | C4 | A的高半字节和低半字节交换 | 1 | 12 |
XCH A,Rn | C8~CF | A和寄存器交换 | 1 | 12 |
XCH A,direct | C5 | A和直接字节交换 | 2 | 12 |
XCH A,@Ri | C6,C7 | A和间接RAM交换 | 1 | 12 |
XCHD A,@Ri | D6,D7 | A和间接RAM的低四位交换 | 1 | 12 |
XRL A,Rn | 68~6F | 寄存器和A相"异或" | 1 | 12 |
XRL A,direct | 65 | 直接字节和A相"异或" | 2 | 12 |
XRL A,@Ri | 66,67 | 间接RAM和A相"异或" | 1 | 12 |
XRL A,#data | 64 | 立即数和A相"异或" | 2 | 12 |
XRL direct,A | 62 | A和直接字节相"异或" | 2 | 12 |
XRL direct,#data | 63 | 立即数和直接字节相"异或" | 3 | 24 |
================================================================
51片内RAM一览
0F0H: *B(B寄存器)
A,B两无符号8位数相乘,16位积低字节在A,高字节在B;
A除B,商的整数在A,余数在B。
0E0H:*A(累加器)
数据中转,判断等。
0D0H:*PSW(程序状态字)
位 | 位地址 | 位功能如 |
0 | D0 | P:累加器A中的数据奇、偶标志位,1的个数为奇,P=1 |
1 | D1 | -未用 |
2 | D2 | OV:溢出标志位,有溢出OV=1 |
3 | D3 | RS0:寄存器选择位,RS0,RS1为00=0区,10=1区,10=2区,11=3区 |
4 | D4 |
|
5 | D5 | F0:用户标志位 |
6 | D6 | AC:半进位标志,操作结果低四位向高四位进,借位时AC=1 |
7 |
| CY:进位标志位,操作结果向最高位有进位,借位时CY=1 |
0B8H: *IP(中断优先级控制)
位 | 位地址 | 位功能 |
0 | B8 | PX0:确定外部中断INT0优先级,1=高,0=低 |
1 | B9 | PT0:确定T0优先级别 |
2 | BA | PX1:确定外部中断INT1优先级 |
3 | BB | PT1:确定T1优先级别 |
4 | BC | 确定串行口优先级别 |
5 | 5 | 确定T2优先级别(仅8052/32有) |
6 | 6 | 未用 |
7 | 7 | 未用 |
0B0H:*P3(P3口,双向I/O口,有第二功能)
位 | 位地址 | 位第一功能 | 位第二功能 |
0 | B0 | P3.0 | RXD:串入口 |
1 | B1 | P3.1 | TXD:串出口 |
2 | B2 | P3.2 | /INT0:外中断0入 |
3 | B3 | P3.3 | /INT1:外中断1入 |
4 | B4 | P3.4 | T0:外计数脉冲0入 |
5 | B5 | P3.5 | T1:外计数脉冲1入 |
6 | B6 | P3.6 | /WR:外RAM写选通脉冲出 |
7 | B7 | P3.7 | /RD:外RAM读选通脉冲出 |
0A8H:*IE(中断允许控制)
位 | 位地址 | 位功能 |
0 | A8 | EX0:外部中断0,1=允许,0=禁止 |
1 | A9 | ET0:T0中断 |
2 | AA | EX1:外部1中断 |
3 | AB | ET1:T1中断 |
4 | AC | ES: 串行口中断 |
5 | 5 | ET2:T2中断,(仅8032/52有) |
6 | 6 | -:未用 |
7 | AF | EA:总中断 |
0A0H:*P2(P2口,双向I/O口)
位 | 位地址 | 位功能 |
0 | A0 | P2.0 |
1 | A1 | P2.1 |
2 | A2 | P2.2 |
3 | A3 | P2.3 |
4 | A4 | P2.4 |
5 | A5 | P2.5 |
6 | A6 | P2.6 |
7 | A7 | P2.7 |
99H: SBUF(串行数据缓冲器)
98H: *SCON(串行控制)
位 | 位地址 | 位功能 |
0 | 98.RI | 串行口接受中断标志,允许串口收时,收到一字符后RI=1,CPU响应中断返回后不清RI,须用户清RI. |
1 | 99.TI | 串行口发送中断标志,CPU写一数据到SBUF后,就启动发送器工作,串口以0方式发送时,每发送完8位数据,硬件置TI=1,方式1、2、3时,在发送停止位时TI=1,TI=1表示串口正向CPU申请发送中断,CPU响应中断返回后不清TI,须用户清TI. |
2 | 9A.RB8 |
|
3 | 9BTB8 |
|
4 | 9C.REN |
|
5 | 9D.SM2 |
|
6 | 9E.SM1 |
|
7 | 9F.SM0 |
|
87H: PCON(电源控制)
不能位寻址!!!
D7 SMOD:波特率备增位
D6 -------:
D5 -------:该三位未定义
D4 -------:
D3 GF1:通用标志位,由软件置/复位
D2 GF0: 通用标志位,由软件置/复位
D1 PD:PD=1,掉电工作方式
D0 IDL:IDL=1,节电工作方式(又称待机方式)
*退出掉电/节电方式可(1):使用硬复位,使该位清零
(2):设中断程序,通过RETI指令复位该位。
90H:*P1(P1口,双向I/O口)
位 | 位地址 | 位功能 |
0 | 90 | P1.0 |
1 | 91 | P1.1 |
2 | 92 | P1.2 |
3 | 93 | P1.3 |
4 | 94 | P1.4 |
5 | 95 | P1.5 |
6 | 96 | P1.6 |
7 | 97 | P1.7 |
8DH:TH1(定时/计数器1的高位字节)
8CH:TH0(定时/计数器0的高位字节)
8BH:TL1(定时/计数器1的低位字节)
8AH:TL0(定时/计数器0的低位字节)
89H:TMOD(定时/计数器的方式控制)
位 | 位功能 |
0 | T0:M0 |
1 | M1 M0、M1为T0方式选择,见下表 |
2 | C/T T0定时/计数选择,0定时,1外部计数 |
3 | GATE T0门控制,GATE=1时,计数/定时受外部电平控制,GATE=0时,不受外引脚控制 |
4 | T1: M0 |
5 | M1 M0、M1为T1的方式选择,见下表 |
6 | C/T T1定时/计数选择,0定时,1外部计数 |
7 | GATE T1门控制,GATE=1时,计数/定时受外部电平控制,GATE=0时,不受外引脚控制 |
方式 | M0 | M1 | 功能 |
0 | 0 | 0 | 又TL低5位,TH 高8位组成13位定时/计数器 |
1 | 0 | 1 | 16位定时/计数器 |
2 | 1 | 0 | 常数自动装入8位定时/计数器,TL为计数器,TH为常数寄存器 |
3 | 1 | 1 | 仅适应T0,TL0,TH0均为定时/计数器 |
88H:*TCON(定时/计数器控制)
位 | 位地址 | 位功能 |
0 | 88 | IT0:外中断INT0触发方式控制位,IT0=1,电平触发;IT0=0,边沿触发 |
1 | 89 | IE0:外中断INT0中断请求位,IE0=1,有外中断请求,IE0=0,外中断请求已清除。(仅适应边沿方式) |
2 | 8A | IT1:功能同IT0 |
3 | 8B | IE1:功能同IE0 |
4 | 8C | TR0:定时器T0的运行控制位,可用软件置位,复位在TMOD的GATE=0时,TR0=1时T0计数允许;在TMOD的GATE=1时,TR0=1而INT1为高时T0计数INT1为低时T0禁止计数 |
5 | 8D | TF0:定时器T0的溢出标志位,当定时计数器的最高位产生溢出时,TF0=1,CPU响应中断,此时硬件清TF0为0;也可由程序查询或位操作清除 |
6 | 8E | TR1:功能同TR0 |
7 | 8F | TE1:功能同TE0 |
83H: DPTR(数据指针,DPH)
82H:DPTR(数据指针,DPL)
81H:SP(堆栈指针)
80H:*P0(P0口,双向I/O口)
位 | 位地址 | 位功能 |
0 | 80 | P0.0 |
1 | 81 | P0.1 |
2 | 82 | P0.2 |
3 | 83 | P0.3 |
4 | 84 | P0.4 |
5 | 85 | P0.5 |
6 | 86 | P0.6 |
7 | 87 | P0.7 |
7FH:数据缓冲区(常用作堆栈区)
RAM区位地址与字节地址对照表
字节地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
2FH | 7F | 7E | 7D | 7C | 7B | 7A | 79 | 78 |
2EH | 77 | 76 | 75 | 74 | 73 | 72 | 71 | 70 |
2DH | 6F | 6E | 6D | 6C | 6B | 6A | 69 | 68 |
2CH | 67 | 66 | 65 | 64 | 63 | 62 | 61 | 60 |
2BH | 5F | 5E | 5D | 5C | 5B | 5A | 59 | 58 |
2AH | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 50 |
29H | 4F | 4E | 4D | 4C | 4B | 4A | 49 | 48 |
28H | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 |
27H | 3F | 3E | 3D | 3C | 3B | 3A | 39 | 38 |
26H | 37 | 36 | 35 | 34 | 33 | 32 | 31 | 30 |
25H | 2F | 2E | 2D | 2C | 2B | 2A | 29 | 28 |
24H | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
23H | 1F | 1E | 1D | 1C | 1B | 1A | 19 | 18 |
22H | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 |
21H | 0F | 0E | 0D | 0C | 0B | 0A | 09 | 08 |
20H | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
1FH: R0~R7 3
17H: R0~R7 2
0FH: R0~R7 1
07H: R0~R7 0
00H:
最后
以上就是幽默宝贝为你收集整理的51指令及片内RAM一览表的全部内容,希望文章能够帮你解决51指令及片内RAM一览表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复