51指令机器码对照表
51指令机器码
FFHF0H B 00000000 E0H ACC 00000000 D0H PSW 00000000 CDH TH2 00000000 CCHTL200000000CBH RCAP2H 00000000 CAH RCAP2L 00000000 C9H T2MOD xxxxxx00 C8HT2CON 00000000 B8H IP xx000000 B0H P3 11111111 A8H IE 0x000000 A0H P2 11111111 99H SBUF 不定 98H SCON 00000000 90H P1 11111111 8DH TH1 00000000 8CH TH0 00000000 8BH TL1 00000000 8AH TL0 00000000 89H TMOD 00000000 88H TCON 00000000 87H PCON 0xxx0000 83H DPH 00000000 82H DPL 00000000 81H SP 00000111 80HP011111111特殊功能 寄存器区 (SFR )用户RAM 区 (堆栈、数据缓冲)位寻址区 (00H~7FH ) 第3组 工作寄存器区 第2组 工作寄存器区 第1组 工作寄存器区 第0组 工作寄存器区FFH 80H 7FH 30H 2FH 20H 1FH 18H 17H 10H 0FH 08H 07H 00H主要SFR寄存器介绍1.电源控制寄存器D7 D6 D5 D4 D3 D2 D1 D0SMOD ---GF1 GF0 PD IDLSMOD:波特率倍增位。
SMOD=1,波特率提高1倍。
GF1,GF0:通用标志位。
PD:掉电方式位。
当PD=1时,进入掉电方式。
IDL:空闲方式位。
当IDL=1,进入空闲工作方式。
2.定时/计数器控制寄存器TCON(88H)D7 D6 D5 D4 D3 D2 D1 D0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0IT0:选择0INT 的中断触发方式:IT0=0,电平触发,低电平有效;IT0=1,边沿触发,下降沿有效。
MCS-51指令及编码表
机器周期数 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2
指令助记符 NOP AJMP LJMP RR INC INC INC INC INC INC INC INC INC INC INC INC JBC ACALL LCALL RRC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC EDC EDC JB
机器周期数 1 1 1 2 2 2 2 1 2 1 1 1 1 1 1 1 1 1 1 2 2 2 2 4 2 1 1 1 1 1 1 1 1 1 1 2 2 2
指令助记符 XRL XRL XRL JNZ ACALL ORL JMP MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SJMP AJMP ANL MOVC DIV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV ACALL MOV
操作数 A,@R1 A,R0 A,R1 A,R2 A,R3 A,R4 A,R5 A,R6 A,R7 bit,rel code addr11 direct,A direct,#data A,#data A,direct A,@R0 A,@R1 A,R0 A,R1 A,R2 A,R3 A,R4 A,R5 A,R6 A,R7 bit,rel code addr11 direct,A direct,#data A,#data A,direct A,@R0 A,@R1 A,R0 A,R1 A,R2 A,R3 A,R4
6
续表 机器码 [H] DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF
51单片机指令集
MCS-51系列单片机指令表 2(2009-11-23 14:28:48)转载标签: 51单片机命令指令it 分类:单片机7、JNZ rel指令名称:判0转移指令指令代码:70H指令功能:累加位(A)的内容不为0,则程序转移;否则程序顺序执行。
操作内容:若(A)≠0,则PC←(PC)+2+rel若(A)=0,则PC←(PC)+2字节数: 2机器周期:28、JZ rel指令名称:判0转移指令指令代码:60H指令功能:累加位(A)的内容为o,则程序转移;否则程序顺序执行。
操作内容:若(A)=0,则PC←(PC)+2+rel若(A)≠0,则PC←(PC)+2字节数: 2机器周期:2MCS-51系列单片机指令以L开头的指令就2条,分别为:LCALL addr16 LJMP addrl61、LCALL addr16指令名称:长调用指令指令代码:12H指令功能:按指令给定地址进行子程序调用操作内容:PC←(PC)+3SP←(SP)+1(SP)←(PC)7~0SP←(SP)+1(SP)←(PC)15~8PC←addrl6字节数: 3机器周期:2使用说明:在64KB的范围内调用子程序2、LJMP addrl6指令名称:长转移指令指令代码:02H指令功能:使程序按指定地址进行无条件转移操作内容:PC←addrl6字节数: 3机器周期:2MCS-51系列单片机指令以M开头的指令有24条,分别为: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 direct2,direct1MOV direct, @Ri MOV direct,#data MOV @Ri,A MOV @Ri,direct MOV @Ri,data MOV C,bit MOV bit,C MOV DPTR,#datal6 MOVC A,@A+DPTR MOVCA,@A+PC MOVX A,@Ri MOVX A,@DPTR MOVX @Ri,A MOVX @DPTR,A MULAB1、MOV A,Rn指令名称:寄存器数据传送指令指令代码:E8H~EFH指令功能:寄存器内容送累加器操作内容:A←(Rn), n=0~7字节数: 1机器周期:12、MOV A,direct指令名称:直接寻址数据传送指令指令代码:E5H指令功能:内部RAM低126单元或专用寄存器内容送累加器操作内容:A←(direct)字节数: 2机器周期:13、MOV A,@Ri指令名称:间接寻址数据传送指令指令代码:E6H~E7H指令功能:内部RAM低128单元内容送累加器操作内容:A←((Ri)), i=0,1字节数: 1机器周期:14、MOV A,#data指令名称:立即数据传送指令指令代码:74H指令功能:立即数送累加器操作内容:A←data字节数: 2机器周期:15、 MOV Rn,A指令名称:累加器数据传送指令指令代码:F8H~FFH指令功能:累加器内容送寄存器操作内容:Rn←(A)字节数: 1机器周期:16、MOV Rn,direct指令名称:直接寻址数据传送指令指令代码:A8H~AFH指令功能:内部RAM低128单元或专用寄存器内容送累加器操作内容:Rn←(direct),n=0~7字节数: 2机器周期:27、MOV Rn,#data指令名称:立即数据传送指令指令代码:78H~7FH指令功能:立即数送寄存器操作内容:Rn←data,n=0~7字节数: 28、MOV direct,A指令名称:累加器数据传送指令指令代码:F5H指令功能:累加器内容送内部RAM低128单元或专用寄存器操作内容:direct←(A)字节数: 2机器周期:19、MOV direct,Rn指令名称:寄存器数据传送指令指令代码:88H~8FH指令功能:寄存器内容送内部RAM低128单元或专用寄存器操作内容:direct←(Rn), n=0~7字节数: 2机器周期:210、MOV direct2,direct1指令名称:直接寻址数据传送指令指令代码:85H指令功能:内部RAM低123单元或专用寄存器之间的相互传送操作内容:direct2←(direct1)字节数: 311、MOV direct, @Ri指令名称:间接寻址数据传送指令指令代码:86H~87H指令功能:内部RAM低128单元内容送内部RAM低128单元或专用寄存器操作内容:direct←((Ri)),i=0,1字节数: 2机器周期:212、MOV direct,#data指令名称:立即数传送指令指令代码:75H指令功能:立即数送内部RAM低128单元或专用寄存器操作内容:direct←data字节数: 3机器周期:213、MOV @Ri,A指令名称:累加器数据传送指令指令代码:F6H~F7H指令功能:累加器内容送内部RAM低128单元操作内容:(Ri)←(A),i=0,1字节数: 114、MOV @Ri,direct指令名称:直接寻址数据传送指令指令代码:A6H~A7H指令功能:内部RAM低128单元或专用寄存器内容送内部RAM 低128单元操作内容:(Ri)←(direct), i=0,1字节数: 2机器周期:215、MOV @Ri,data指令名称:立即数传送指令指令代码:76H~77H指令功能:立即数送内部RAM低128单元操作内容:(Ri)←data, i=0,1字节数: 2机器周期:116、MOV C,bit指令名称:位数据传送指令指令代码:A2H指令功能:内部RAM可寻址位或专用寄存器的位状态送累加位C操作内容:C←(bit)字节数: 2机器周期:117、MOV bit,C指令名称:累加位数据传送指令指令代码:92H指令功能:累加器状态送内部RAM可寻址位或专用寄存器的指定位操作内容:bit←(C)字节数: 2机器周期:218、MOV DPTR,#datal6指令名称:+六位数据传送指令指令代码:90H指令功能:十六位立即数送数据指针操作内容:DPH←datal5~8DPL←data7~0字节数: 3机器周期:219、MOVC A,@A+DPTR指令名称:程序存储器读指令指令代码:93H指令功能:读程序存储器单元内容送累加器操作内容:A←((A)+(DPTR))字节数: 1机器周期:2使用说明:变址寄存器A内容加基址寄存器DPTR内容时,低8位产生的进位直接加到高位,不影响进位标志。
51汇编语言指令集
51汇编语言指令集符号定义表符号含义Rn R0~R7寄存器n=0~7Direct 直接地址,内部数据区的地址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) #data 8位常数#data16 16位常数Addr16 16位的目标地址Addr11 11位的目标地址Rel 相关地址bit 内部数据RAM(20H~2FH),特殊功能寄存器的直接地址的位指令介绍指令字节周期动作说明算数运算指令1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果存回累加器2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结果存回累加器3.ADD A,@Ri 1 1 将累加器与间接地址的内容相加,结果存回累加器4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加器5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相加,结果存回累加器6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C相加,结果存回累加器7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位C相加,结果存回累加器8.ADDC A,#data 2 1 将累加器与常数及进位C相加,结果存回累加器9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借位C,结果存回累加器10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借位C,结果存回累加器11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借位C,结果存回累加器12.SUBB A,#data 2 1 将累加器的值减常数值减借位C,结果存回累加器13.INC A 1 1 将累加器的值加114.INC Rn 1 1 将寄存器的值加l15.INC direct 2 1 将直接地址的内容加116.INC @Ri 1 1 将间接地址的内容加117.INC DPTR 1 1 数据指针寄存器值加1说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位18.DEC A 1 1 将累加器的值减119.DEC Rn 1 1 将寄存器的值减120.DEC direct 2 1 将直接地址的内容减121.DEC @Ri 1 1 将间接地址的内容减122.MUL AB 1 4 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。
MCS-51单片机指令简表-2011
类 别 指令 代码 74 __ E8~EF E5 __ E6~E7 F8~FF 78~7F __ A8~AF __ F5 __ 88~8F __ 75 __ __ 86~87 __ 85 d2 d1 F6~F7 76~77 __ A6~A7 __ 90 __ __ E2~E3 F2~F3 E0 F0 93 83 C8~CF C6~C7 C5 __ D6~D7 C4 C0 __ D0 __ 28~2F 26~27 25 __ 24 __ 38~3F 36~37 34 __ 35 __ 98~9F 96~97 94 __ 95 __ 指令格式 MOV A ,#data MOV A, Rn , MOV A ,direct MOV A ,@ ,@Ri MOV Rn,A , MOV Rn,#data , MOV Rn ,direct MOV direct ,A MOV direct ,Rn MOV direct ,#data MOV direct ,@ ,@Ri MOV direct1,direct2 , MOV @Ri ,A MOV @Ri ,#data MOV @Ri ,direct MOV DPTR ,#data16 MOVX A ,@ ,@Ri MOVX @Ri ,A MOVX A ,@ ,@DPTR MOVX @DPTR ,A MOVC A ,@ ,@A+DPTR MOVC A ,@ ,@A+PC XCH A ,Rn XCH A ,@ ,@Ri XCH A ,direct XCHD A ,@ ,@Ri SWAP A PUSH POP ADD ADD ADD ADD ADDC ADDC ADDC ADDC SUBB SUBB SUBB SUBB direct direct A, Rn , A, @Ri , A, direct , A, #data , A, Rn , A, @Ri , A, #data , A, direct , A, Rn , A, @Ri , A, #data , A, direct , 功能简述 立即数送累加器 A 工作寄存器内容 内容送累加器 工作寄存器内容送累加器 A 直接寻址片内单元(含 内容送累加器 直接寻址片内单元 含 SFR)内容送累加器 A 内容 单元内容 内容送累加器 间接寻址片内 RAM 单元内容送累加器 A 的内容 累加器 A 的内容送工作寄存器 立即数送工作寄存器 直接寻址片内单元内容 内容送工作寄存器 直接寻址片内单元内容送工作寄存器 的内容送直接寻址片内单元 累加器 A 的内容送直接寻址片内单元 工作寄存器内容送直接寻址片内单元 寄存器内容 工作寄存器内容送直接寻址片内单元 立即数送直接寻址片内单元 间址片内 单元内容 内容送直接寻址片内单元 间址片内 RAM 单元内容送直接寻址片内单元 直接寻址片内单元 2 送片内单元 1 累加器的内容 的内容送间接寻址片内 累加器的内容送间接寻址片内 RAM 单元 立即数送间接寻址片内 RAM 单元 直接寻址片内单元内容 片内单元内容送间址片内 直接寻址片内单元内容送间址片内 RAM 单元 16 位立即数送 16 位寄存器 DPTR 外部数据存储器单元内容 数据存储器单元内容送累加器 外部数据存储器单元内容送累加器 A(P2、Ri 址) 、 内容送外部数据存储器单元 送外部数据存储器单元(P2、 累加器 A 内容送外部数据存储器单元 、Ri 址) 外部数据存储器单元内容 数据存储器单元内容送累加器 位址) 外部数据存储器单元内容送累加器 A(16 位址 的内容送外部数据存储器单元 送外部数据存储器单元(16 位址 位址) 累加器 A 的内容送外部数据存储器单元 查表读程存 读程存数据送累加器 查表读程存数据送累加器 A (A+DPTR 为地址) 查表读程存 读程存数据送累加器 值为地 查表读程存数据送累加器 A (A+ PC 值为地址) 与工作寄存器内容 内容交换 累加器 A 与工作寄存器内容交换 单元内容 内容交换 累加器 A 与间接寻址片内 RAM 单元内容交换 与直接寻址片内单元内容 内容交换 累加器 A 与直接寻址片内单元内容交换 单元之间 之间低 累加器 A 与间址片内 RAM 单元之间低 4 位交换 中的高 累加器 A 中的高 4 位与低 4 位交换 直接寻址片内单元的内容压入新的栈顶单元 直接寻址片内单元的内容压入新的栈顶单元 新的栈顶 SP←SP+1, (SP) ← , ( )←(direct) ) 弹出栈顶单元数据给 弹出栈顶单元数据给直接寻址片内单元 ,SP← (direct)←(SP) ) ) , ←SP-1 累加器加工作寄存器 结果存累加器 A 累加器加间址片内 RAM 单元 累加器加直接寻址片内单元 累加器加立即数 累加器加工作寄存器以及进位标志位 以及进位标志 累加器加工作寄存器以及进位标志位 单元以及进位标志位 以及进位标志 累加器加间址片内 RAM 单元以及进位标志位 累加器加立即数以及进位标志位 以及进位标志 累加器加立即数以及进位标志位 累加器加直接寻址片内单元以及进位标志位 以及进位标志 累加器加直接寻址片内单元以及进位标志位 累加器减工作寄存器以及进位标志位 以及进位标志 累加器减工作寄存器以及进位标志位 单元以及进位标志位 以及进位标志 累加器减间址片内 RAM 单元以及进位标志位 累加器减立即数以及进位标志位 以及进位标志 累加器减立即数以及进位标志位 累加器减直接寻址片内单元以及进位标志位 累加器减直接寻址片内单元以及进位标志位 以及进位标志 字节 机器 数 周期 2 1 1 1 2 1 1 1 1 1 2 1 2 2 2 1 2 2 3 2 2 2 3 2 1 1 2 1 2 2 3 2 1 2 1 2 1 2 1 2 1 2 1 2 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1
MCS-51经典指令表
经典MCS-51系列单片机指令表2006-11-20 09:34MCS-51系列单片机指令以A开头的指令有18条,分别为:ACALL addr11 ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data ADDC A,RnADDC A,direct ADDC A,@Ri ADDC A,#data AJMP addr11 ANL A,Rn ANL A,direct ANL A,@Ri ANL A,#data ANL direct,A ANL direct,#data ANL C,bit ANL C,/bit1、ACALL addr11指令名称:绝对调用指令指令代码:A10 A9 A9 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0指令功能:构造目的地址,进行子程序调用。
其方法是以指令提供的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 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0指令功能:构造目的地址,实现程序转移。
51汇编和机器码对照表
2
1
C2
CPL A
A求反码
1
1
F4
CPL C
进位位取反
1
1
B3
CPL bit
直接位取反
2
1
B2
RL A
A循环左移一位
1
1
23
RLC A
A 带进位左移一位
1
1
33
RR A
A右移一位
1
1
03
RRC A
A 带进位右移一位
1
1
13
SWAP A
A 半字节交换
1
1
C4
3.算术运算指令(24条)
ADD A,Rn
16;17
MUL AB
A乘B
1
4
A4
DIV AB
A被B除
1
4
84
DA A
A十进制调整
1
1
D4
4.转移指令(22条)
AJMP addr 11
绝对转移
2
2
*1
LJMP addr 16
长转移
3
2
02
SJMP rel
短转移
2
2
80
JMP @A+DPTR
相对于DPTR 间接转移
1
2
73
JZ rel
若A=0 则转移
2
2
D8—DF
DJNZ data,rel
直接字节减1 不为 0 转移
3
2
D5
ACALL addr 11
绝对子程序调用
2
2
*1
LCALL addr 16
子程序调用
51单片机指令系统
第 3 章 MCS - 51单片机指令系统
POP DPH POP DPL POP ACC POP PSW 执行之后, SP内容修改为 60H, 而64H、 63H、 62H、 61H 单元中的内容依次弹出到DPH、DPL、A、PSW中。
MCS -51 提供一个向上升的堆栈, 因此SP设置初值时要
的总线。由Ri作为间接寻址寄存器时, P0 口上分时输出Ri指
定的 8 位地址信息及传输 8 位数据。
第 3 章 MCS - 51单片机指令系统
5. 堆栈操作指令 PUSH direct POP direct 在MCS -51 单片机的内部RAM中, 可以设定一个先进后 出的区域, 称其为堆栈。在特殊功能寄存器中有一个堆栈指针 SP, 它指出栈顶的位置。 进栈指令的功能是: 首先将堆栈指针 SP的内容加1, 然后将直接地址所指出的内容送入SP指出的内 部RAM单元; 出栈指令的功能是: 将SP所指出的内部RAM单 元的内容送入由直接地址所指出的字节单元, 接着将堆栈指针
第 3 章 MCS - 51单片机指令系统
3.2 指令系统
3.2.1 指令分类
按指令的功能, MCS -51 指令系统可分为下列 5 类:
(1) 数据传送;
(2) 算术运算; (3) 逻辑运算; (4) 位操作; (5) 控制转移。
第 3 章 MCS - 51单片机指令系统
Rn——当前选定的寄存器区中的 8 个工作寄存器R0~R7, 即 n=0~7。 Ri——当前选定的寄存器区中的 2 个寄存器R0、 R1, i=0、1。 direct—— 8 位内部RAM单元的地址, 它可以是一个内部数据 区 RAM单元(00H~7FH)或特殊功能寄存器地址(I / O端口、 控 制寄存器、 状态寄存器 80H~0FFH)。 #data——指令中的 8 位常数。
51系列单片机指令系统
MOV DPTR,#1000H MOVX A,@DPTR INC DPTR, MOVX @DPTR,A 7、程序存储器向累加器A传送指令 MOVC A,@A+DPTR MOV DPTR,#100H MOV A,R0 MOVC A,@A+DPTR ORG 0100H. DB 0,1,4,9,16,25 8、堆栈操作指令 PUSH direct POP direct 第一条指令称之为入栈指令,就是将direct中的内容 送入堆栈中,第二条指令称之为弹出指令,就是将堆栈 中的内容送回到direct中。
位寻址时,操作数是二进制数的某一位,其位地 址出现在指令中,例如指令 • SETB bit ;(bit) ← l • 51系列单片机可用于位寻址的空间是内部RAM的可 位寻址区和SFR区中的字节地址可以被8整除(即地址以 “0”或“8”结尾)的寄存器所占空间,寻址方式如表 2-2所示。
表2-2 寻址方式一览表
寻 址 方 式
寻 址 范 围
R0-R7 ,DPTR ACC,B,C(CY位)
内部RAM 00H-7FH 特殊功能寄存器 80H-FFH 内部RAM位寻址区 (20H-2FH): 位地址00H-7FH 可寻址的特殊功能寄存器: 位地址 80H-F7H 以数据指针表示操作数 内部RAM 00H-7FH 外部RAM或I/O端口 00H-FFH / 0000H-FFFFH
图2-3 寄存器间接寻址
图2-4 立即寻址
4、立即寻址
•
立即寻址时,指令中直接给出操作数。例如指令 MOV A,#76H ;数据76H送累加器 A。 • 立即数寻址过程如图2-4所示。
5、变址寻址
•
变址寻址时,指定的变址寄存器的内容与指令中 给出的偏移量相加,所得的结果作为操作数的地址。 例如指令MOVC A, @A+DPTR ;((A)+(DPTR))送 A。变址寻址过程如图2-5所示。 不论用DPTR或PC作为基址指针,变址寻址方式都 只适用于51系列单片机的程序存储器,通常用于读取 数据表也就是将程序存储器中的数送入A中。因此也称 为查表指令,常用此指令来查一个已做好在程序存储 器中的表格,这条指令采用变址寻址。
汇编指令机器码对应列表
BE MOV si,immed16
BF MOV di,immed16
C0 Table1 reg8
C1 Table1 reg8, reg16
C2 RET immed16
C3 RET
C4 LES reg16/mem16,mem16
C5 LDS reg16/mem16,mem16
6F OUTSW
70 JO immed8
71 JNO immed8
72 JB immed8
73
JNB immed8
74 JZ immed8
75 JNZ immed8
76 JBE immed8
77 JA immed8
78 JS immed8
79 JNS immed8
7A JP immed8
7B JNP immed8
C6 MOV reg8/mem8,immed8
C7 MOV reg16/mem16,immed16
C8 ENTER immed16, immed8
C9 LEAVE
CA RET immed16
CB RET
CC INT 3
CD INT immed8
CE INTO
CF IRET
D0 Table1 reg8
27 DAA
28 SUB reg8/mem8,reg8
29 SUB reg16/mem16,reg16
2A SUB reg8,reg8/mem8
2B SUB reg16,reg16/mem16
2C SUB al,immed8
2D SUB ax,immed16
2E Segment override
2F DAS
51单片机汇编指令详解
1、XCH A,Rn指令名称:寄存器寻址字节交换指令指令代码:C8H~CFH指令功能:寄存器寻址字节操作内容:(A)交换(Rn);n=0~7字节数: 1机器周期:12、XCH A,direct指令名称:直接寻址字节交换指令指令代码:C5H指令功能:累加器内容与内部RAM低128单元或专用寄存器内容交换操作内容:(A)交换(direct)字节数: 2机器周期:13、XCH A,@Ri指令名称:间接寻址字节交换指令指令代码:C6H~C7H指令功能:累加器内容与内部RAM低128单元内容交换操作内容:(A)交换((Ri)); i=0,1字节数: 1机器周期:14、XCHD A,@Ri指令名称:半字节交换指令指令代码:D6H~D7H指令功能:累加器内容低4位与内部RAM低128单元低4位交换操作内容:(A)3~0交换((Ri))3~0;i=0,1字节数: 1机器周期:15、XRL A,Rn指令名称;逻辑异或操作指令指令代码:68H~6FH指令功能:累加器内容与寄存器内容进行逻辑异或操作操作内容:A<-(A)异或(Rn); n=0~7字节数: 1机器周期:16、XRL A,direct指令名称:逻辑异或操作指令指令代码:65H指令功能:累加器内容与内部RAM低128单元或专用寄存器内容进行逻辑异或操作操作内容:A<-(A)异或(direct)字节数: 2机器周期:17、XRL A,@Ri指令名称:逻辑异或指令指令代码:66H~67H指令功能:累加器与内部RAM低128单元内容进行逻辑异或操作操作内容:A<-(A)异或((Ri)); i=0,1字节数: 1机器周期:18、XRL A,#data指令名称:逻辑异或指令指令代码:64H指令功能:累加器内容与立即数进行逻辑异或操作操作内容:A1?/FONT>(A)异或data字节数: 2机器周期:19、XRL direct,A指令名称:逻辑异或操作指令指令代码:62H指令功能:累加器内容与内部RAM低128单元或专用寄存器内容进行逻辑异或操作操作内容:direct一(direct)异或(A)字节数: 2机器周期:110、XRL direct,#data指令名称:逻辑异或操作指令指令代码:63H指令功能:内部RAM低128单元或专用寄存器内容与立即数进行逻辑异或操作操作内容:direct<-(direct)异或data字节数: 3机器周期:2以R开头的指令有6条,分别为:RETRETIRL ARLC ARR ARRC A1、RET指令名称:子程序返回指令指令代码:22H指令功能:子程序返回操作内容:PC15~8<-((SP))SP<-(SP)-1PC7~0<-((SP))SP<-(SP)-1字节数: 1机器周期:22、RETI指令名称:中断返回指令指令代码:32H指令功能:中断服务程序返回操作内容’:PC15?/FONT>8<-((SP))SP<-(SP)-lPC7~0<-((SP))SP<-(SP)-1字节数: 1机器周期:23、RL A指令名称:循环左移指令指令代码:23H指令功能:累加器内容循环左移一位操作内容:An+1<-(An); n=0~6A0<-(A7)字节数: 1机器周期:14、RLC A指令名称:带进位循环左移指令指令代码:33H指令功能:累加器内容连同进位标志位循环左移一位操作内容:An-1<-(An); n=0~6A0<-(C)C<-(A7)字节数: 1机器周期:15、RR A指令名称:循环右移指令指令代码:03H指令功能:累加器内容循环右移一位操作内容:An<-(An+1);n=0~6A7<-(A0)字节数: 1机器周期:16、RRC A指令名称:带进位循环右移指令指令代码:13H指令功能:累加器内容连同进位标志位循环右移一位操作内容:An<-(An+1);n=0~6A7<-(C)C<-(A0)字节数: 1机器周期:11、SETB c指令名称:进位标志置位指令指令代码:D.H指令功能:进位标志位置位操作内容:C<-1字节数: 1机器周期:12、SETB bit指令名称:直接寻址位置位指令指令代码:D2H指令功能:内部RAM可寻址位或专用寄存器指定位置位操作内容:bit<-1字节数: 2机器周期:13、SJMP rel指令名称:短转移指令指令代码:80H指令功能:按指令提供的偏移量计算转移的目的地址,实现程序的无条件相对转移;操作内容:PC<-(PC)+2PC<-(PC)+rel字节数: 2机器周期:2使用说明:偏移量是8位二进制补码数,可实现程序的双向转移,其转移范围是(PC一126)一(PC+129)。
51单片机的指令对应机器码
RR A ;累加器A中的内容右移一位
RLC A ;累加器A中的内容连同进位位CY左移一位
RRC A ;累加器A中的内容连同进位位CY右移一位
[2]. 累加器半字节交换指令(1条)
SWAP A ; 累加器中的内容高低半字节互换
[3]. 求反指令(1条)
CJNE A,Rn,#data,rel B8~BF data rel 立即数与寄存器比较,不等则转移
CJNE @Ri,#data,rel B6~B7 data rel 立即数与间接RAM比较,不等则转移
DJNZ Rn,rel D8~DF rel 寄存器减1,不为零则转移
DJNZ dircet,rel B5 dircet rel 直接字节减1,不为零则转移
ORL A,#data 44 data 立即数“或”到A
ORL dircet,A 42 dircet A“或”到直接字节
ORL dircet,#data 43 dircet data 立即数“或”到直接字节
XRL A,Rn 68~6F 寄存器“异或”到A
XRL A,dircet 65 dircet 直接字节“异或”到A
ANL C,/bit B0 直接位的反“与”到进位
ORL C,bit 72 bit 直接位“或”到进位
ORL C,/bit A0 bit 直接位的反“或”到进位
MOV C,bit A2 bit 直接位送进位
MOV bit,C 92 bit 进位送直接位
JC rel 40 rel 进位位为1转移
ORL A,#data ;累加器A的内容和立即数执行逻辑或操作。结果存在累加器A中。
51单片机实验代码
一、实验目的掌握汇编语言设计和调试方法,熟悉键盘操作。
二、实验内容把2000H~20FFH的内容清零。
三、实验程序框图四、实验步骤用连续或单步的方式运行程序,检查2000~20FF中执行程序前后的内容变化。
五、思考假使把2000H~20FFH中的内容改成FF,如何修改程序。
六、程序清单文件名:SW01.ASMORG 0000HLJMP SE01ORG 0640HSE01: MOV R0,#00HMOV DPTR,#2000H ;(0000H)送DPTRLOO1: CLR AMOVX @DPTR,A ;0送(DPTR)INC DPTR ;DPTR+1INC R0 ;字节数加1CJNE R0,#00H,LOO1 ;不到FF个字节再清LOOP: SJMP LOOPEND一、实验目的掌握汇编语言设计和调试方法二、实验内容把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。
三、实验程序框图四、实验步骤用连续或单步方式运行程序,检查2000H~2002H中内容变化情况。
五、思考如何用断点方式调试本程序六、程序清单文件名:SW02.ASMORG 0000HLJMP SE02ORG 0660HSE02: MOV DPTR,#2000HMOVX A,@DPTRMOV B,A ;(2000)→A→BSWAP A ;交换ANL A,#0FH ;屏蔽高位INC DPTRMOVX @DPTR,A ;送2001HINC DPTRMOV A,BANL A,#0FH ;(2000)内容屏蔽高位MOVX @DPTR,A ;送2002HLOOP: JMP LOOPEND实验四数据区传送子程序一、实验目的掌握RAM中的数据操作二、实验内容把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的RAM区。
三、实验程序框图四、实验步骤在R2、R3中输入源首址(例如0000H),R4、R5中输入的目的地址(例如2000H),R6、R7中输入字节数(例如1FFFH),运行程序,检查0000H~1FFFH中内容是否和2000H~3FFFH 中内容完全一致。
MCS-51指令详解
MCS-51指令详解说明:为了使MCS-51单片机初学者快速入门,迅速掌握单片机指令含意、操作码、操作数及对应地址,汇编语言怎样编写等,现按指令操作码按顺序编写。
ORG 0000HNOP ; 空操作指令AJMP L0003 ; 绝对转移指令L0003: LJMP L0006 ; 长调用指令L0006: RR A ; 累加器A内容右移(先置A为88H)INC A ; 累加器A 内容加1INC 01H ; 直接地址(字节01H)内容加1INC @R0 ; R0的内容(为地址) 的内容即间接RAM加1;设R0=02H,02H=03H,单步执行后02H=04HINC @R1 ; R1的内容(为地址) 的内容即间接RAM加1;设R1=02H,02H=03H,单步执行后02H=04HINC R0 ; R0的内容加1 (设R0为00H,单步执行后查R0内容为多少)INC R1 ; R1的内容加1(设R1为01H,单步执行后查R1内容为多少)INC R2 ; R2的内容加1 (设R2为02H,单步执行后查R2内容为多少)INC R3 ; R3的内容加1(设R3为03H,单步执行后查R3内容为多少)INC R4 ; R4的内容加1(设R4为04H,单步执行后查R4内容为多少)INC R5 ; R5的内容加1(设R5为05H,单步执行后查R5内容为多少)INC R6 ; R6的内容加1(设R6为06H,单步执行后查R6内容为多少)INC R7 ; R7的内容加1(设R7为07H,单步执行后查R7内容为多少)JBC 20H,L0017; 如果位(如20H,即24H的0位)为1,则转移并清0该位L0017: ACALL S0019 ; 绝对调用S0019: LCALL S001C ; 长调用S001C: RRC A ; 累加器A的内容带进位位右移(设A=11H,C=0; 单步执行后查A和C内容为多少)DEC A ; A的内容减1DEC 01H ; 直接地址(01H)内容减1DEC @R0 ; R0间址减1,即R0的内容为地址,该地址的内容减1DEC @R1 ; R1间址减1DEC R0 ; R0内容减1DEC R1 ; R1内容减1DEC R2 ; R2内容减1DEC R3 ; R3内容减1DEC R4 ; R4内容减1DEC R5 ; R5内容减1DEC R6 ; R6内容减1DEC R7 ; R7内容减1JB 20H,L002D ; 如果位(20H,即24H的0位)为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转移NOPAJMP L0017 ; 绝对转移ORL 02H,A ; 直接地址内容与A或ORL 02H,#02H; 直接地址内容与立即数或ORL A,#44H ; A与立即数或ORL A,02H ; A与直接地址内容或ORL A,@R0 ; A与R0间址内容或ORL A,@R1 ; A与R1间址内容或ORL A,R0 ; A与R0内容或ORL A,R1 ; A与R1内容或ORL A,R2 ; A与R2内容或ORL A,R3 ; A与R3内容或ORL A,R4 ; A与R4内容或ORL A,R5 ; A与R5内容或ORL A,R6 ; A与R6内容或ORL A,R7 ; A与R7内容或JNC L0017 ; 进位为0转移ACALL L0017 ; 绝对调用ANL 02H,A ; 直接地址与A与ANL 02H,#02H; 立即数与直接地址与ANL A,#02H ; A与立即数与ANL A,02H ; A与直接地址与ANL A,@R0 ; A与R0间址与ANL A,@R1 ; A与R1间址与ANL A,R0 ; A与R0与ANL A,R1 ; A与R1与ANL A,R2 ; A与R2与ANL A,R3 ; A与R3与ANL A,R4 ; A与R4与ANL A,R5 ; A与R5与ANL A,R6 ; A与R6与ANL A,R7 ; A与R7与JZ L0084 ; A为零转移L0084: AJMP L0017 ; 绝对转移XRL 01H,A ; 直接地址与A异或XRL 02H,#01H; 直接地址与立即数异或XRL A,#01H ; A与立即数异或XRL A,01H ; A与直接地址异或XRL A,@R0 ; A与R0间址址异或XRL A,@R1 ; A与R1间址址异或XRL A,R0 ; A与R0异或XRL A,R1 ; A与R1异或XRL A,R2 ; A与R2异或XRL A,R3 ; A与R3异或XRL A,R4 ; A与R4异或L0095: XRL A,R5 ; A与R5异或XRL A,R6 ; A与R6异或XRL A,R7 ; A与R7异或JNZ L0084 ; A不为零转L009A: ACALL L0084 ; 绝对调用ORL C,01H ; 直接位或到进位JMP @A+DPTR ; 相对于DPTR间接转MOV A,#01H ; 立即数送AMOV 01H,#02H ; 立即数送直接地址MOV @R0,#01H ; 立即数送间址R0MOV @R1,#02H ; 立即数送间址R1MOV R0,#01H ; 立即数送R0MOV R1,#01H ; 立即数送R1MOV R2,#01H ; 立即数送R2MOV R3,#01H ; 立即数送R3MOV R5,#01H ; 立即数送R5MOV R6,#01H ; 立即数送R6MOV R7,#01H ; 立即数送R7SJMP 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送直接地址NOPMOV DPTR,#1234H; 建立数据指针地址为1234HACALL L00BA ; 绝对调用MOV 03H,C ; 进位送03H位(即20H的03位)MOVC A,@A+DPTR ; 由A+DPTR寻扯的程序存贮器字节送ASUBB 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 ; 数据指针加1MUL AB ; A乘以BNOP ; A5H为二字节空操作指令NOPMOV @R0,05H ; 直接字芯送R0间接RAMMOV @R1,05H ; 直接字芯送R1间接RAMMOV R1,05H ; 直接字芯送R1S0100: MOV R2,05H ; 直接字芯送R2MOV R3,05H ; 直接字芯送R3MOV R4,05H ; 直接字芯送R4MOV R5,05H ; 直接字芯送R5MOV R6,05H ; 直接字芯送R6MOV R7,05H ; 直接字芯送R7ANL 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 ; 直接字节进栈,SP加1L0139: AJMP L0084 ; 绝对转移CLR 04H ; 直接位清零CLR C; 清零进位SWAP A ; A左环移四位(A的二个半字节交换)XCH A,05H ; 交换A和直接字节XCH A,@R0 ; 交换A和R0间接RAMXCH A,@R1 ; 交换A和R1间接RAMXCH A,R0 ; 交换A和R0XCH A,R1 ; 交换A和R1XCH A,R2 ; 交换A和R2XCH A,R3 ; 交换A和R3XCH A,R4 ; 交换A和R4XCH A,R5 ; 交换A和R5XCH A,R6 ; 交换A和R6XCH A,R7 ; 交换A和R7POP 00H ; 直接字节出栈,SP减1ACALL L0139 ; 绝对调用SETB 03H ; 置位直接位SETB C ; 置位进位DA A ; A的十进制加法调熊DJNZ 01H,L0139 ; 直接字节减1,不为零则转移XCHD A,@R0 ; 交换A和R0间接RAM的低4位XCHD A,@R1 ; 交换A和R1间接RAM的低4位L0158: DJNZ R0,L0139 ; R0减1,不为零则转移DJNZ R1,L0158 ; R1减1,不为零则转移DJNZ R2,L0158 ; R2减1,不为零则转移DJNZ R3,L0158 ; R3减1,不为零则转移DJNZ R4,L0158 ; R4减1,不为零则转移DJNZ R5,L0158 ; R5减1,不为零则转移DJNZ R6,L0158 ; R6减1,不为零则转移DJNZ R7,L0158 ; R7减1,不为零则转移MOVX A,@DPTR ; 外部数据(16位地址)送AL0169: NOPAJMP L0139 ; 绝对转移MOVX A,@R0 ; R0间址即外部数据(8位地址)送AMOVX A,@R1 ; R1间址即外部数据(8位地址)送ACLR A; 清零AMOV A,05H ; 直接字节送AMOV A,@R0 ; R0间接RAM送AMOV A,@R1 ; R1间接RAM送AMOV A,R0 ; R0送AMOV A,R1 ; R1送AMOV A,R2 ; R2送AMOV A,R3 ; R3送AMOV A,R4 ; R4送AMOV A,R5 ; R5送AMOV A,R6 ; R6送AMOV A,R7 ; R7送AMOVX @DPTR,A ; A送外部数据(16位地址)ACALL L0169 ; 绝对调用MOVX @R0,A ; A送R0间址即外部数据(8位地址)MOVX @R1,A ; A送R1间址即外部数据(8位地址)CPL A ; A取反MOV 05H,A ; A送直接字节MOV @R0,A ; A送R0间址即间接RAMMOV @R1,A ; A送R1间址即间接RAMMOV R0,A ; A送R0MOV R1,A ; A送R1MOV R2,A ; A送R2MOV R3,A ; A送R3MOV R4,A ; A送R4MOV R5,A ; A送R5MOV R6,A ; A送R6MOV R7,A ; A送R7END。
MCS-51单片机指令全英文对照
PC = programmer counter //程序计数器ACC = accumulate //累加器PSW = programmer status word //程序状态字SP = stack point //堆栈指针DPTR = data point register //数据指针寄存器IP = interrupt priority //中断优先级IE = interrupt enable // 中断使能TMOD = timer mode //定时器方式(定时器/计数器控制寄存器)ALE = alter (变更,可能是)PSEN = programmer saving enable //程序存储器使能(选择外部程序存储器的意思) EA = enable all(允许所有中断)完整应该是enable all interruptPROG = program (程序)SFR = special function register //特殊功能寄存器TCON = timer control //定时器控制PCON = power control //电源控制MSB = most significant bit//最高有效位LSB = last significant bit//最低有效位CY = carry //进位(标志)AC = assistant carry //辅助进位OV = overflow //溢出ORG = originally //起始来源DB = define byte //字节定义EQU = equal //等于DW = define word //字定义E = enable //使能OE = output enable //输出使能RD = read //读WR = write //写中断部分:INT0 = interrupt 0 //中断0INT1 = interrupt 1//中断1T0 = timer 0 //定时器0T1 = timer 1 //定时器1TF1 = timer1 flag //定时器1 标志(其实是定时器1中断标志位)IE1 = interrupt exterior //(外部中断请求,可能是)IT1 = interrupt touch //(外部中断触发方式,可能是)ES = enable serial //串行使能ET = enable timer //定时器使能EX = enable exterior //外部使能(中断)PX = priority exterior //外部中断优先级PT = priority timer //定时器优先级PS = priority serial //串口优先级MOVC=Move Code读取程序存储器数据表格的数据传送;MOVX=Move External RAM 对外部RAM 的数据传送;XCH=Exchange 字节交换;XCHD=Exchange low-order Digit 低半字节交换;PUSH=Push onto Stack 入栈;POP=Pop from Stack 出栈;(2)算术运算类指令(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 除法;(3)逻辑运算类指令(10 种助记符)ANL=AND Logic 逻辑与;ORL=OR Logic逻辑或;XRL=Exclusive-OR Logic 逻辑异或;CLR=Clear清零;CPL=Complement 取反;RL=Rotate left 循环左移;RLC=Rotate Left through the Carry flag 带进位循环左移;RR=Rotate Right 循环右移;RRC =Rotate Right through the Carry flag带进位循环右移;SWAP =Swap低4 位与高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 空操作;(5)位操作指令(1 种助记符)SETB=set bit置一。
51系列单片机指令
5.3.1 数据传送类指令传送指令是指令系统中最基本、使用最多的一类指令,主要用于数据的传送、保存以及交换等场合。
80C51数据传送类指令有29条,按传送区不同分为:内部数据传送指令、外部数据传送指令、程序存储器数据传送指令、交换指令。
1. 内部数据传送指令内部数据传送是指在工作寄存器R0~R7、内部数据存储器RAM、累加器A、16位数据指针DPTR、内部特殊功能寄存器SFR之间的数据传送。
共有18条指令。
1)以累加器A为目的操作数的指令(4条)这组指令的功能是把源操作数指定的内容送入累加器A中。
有寄存器寻址、寄存器直接寻址、寄存器间接寻址和立即寻址4种寻址方式。
MOV A,Rn ;n=0~7, 寄存器寻址MOV A,direct ;寄存器直接寻址MOV A,@Ri ;i=0~1, 寄存器间接寻址MOV A,#data ;立即寻址2)以寄存器R n为目的的操作数的指令(3条)这组指令的功能是把源操作数的内容送入当前工作寄存器区的R0~R7中的某一寄存器。
源操作数有寄存器寻址、直接寻址和立即寻址3种寻址方式。
MOV Rn,A ;n=0~7, 寄存器寻址MOV Rn,direct ;直接寻址MOV Rn,#data ;立即寻址3)以直接地址为目的操作数的指令(5条)这组指令的功能是把源操作数指定的内容送到由直接地址data所指定的片内RAM中。
有寄存器寻址、直接寻址、寄存器间接寻址和立即寻址4种寻址方式。
MOV direct,A ;寄存器寻址MOV direct,Rn ;寄存器寻址MOV direct,@Ri ;i=0~1, 寄存器间接寻址MOV direct,#data ;立即寻址MOV direct,direct ;直接寻址4)以间接地址为目的操作数的指令(3条)这组指令的功能是把源操作数指定的内容送到以R i(i=0~1)中的内容为地址的片内RAM中。
有寄存器寻址、直接寻址和立即寻址3种寻址方式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理与接口技术──51指令机器码
MCS-51单片机指令编码
一、数据传送指令
助记符指令机器指令编码
MOV A,Rn 1 1 1 0 1 r r r
MOV A,direct 1 1 1 0 0 1 0 1 直接地址
MOV A,@Ri 1 1 1 0 1 0 1 i
MOV A,#data 0 1 1 1 0 1 0 0 立即数
MOV Rn,A 1 1 1 1 1 r r r
MOV Rn, direct 1 0 1 0 1 r r r 直接地址
MOV Rn, #data 0 1 1 1 1 r r r 立即数
MOV direct,A 1 1 1 1 0 1 0 1 直接地址
MOV direct,Rn 1 0 0 0 1 r r r 直接地址
MOV direct,direct 1 0 0 0 0 1 0 1 直接地址(源) 直接地址(目)
MOV direct,@Ri 1 0 0 0 0 1 1 i 直接地址
MOV direct,#data 0 1 1 1 0 1 0 1 直接地址 立即数
MOV @Ri,A 1 1 1 1 0 1 1 r
MOV @Ri,direct 1 0 1 0 0 1 1 i 直接地址
MOV @Ri,#data 0 1 1 1 0 1 1 i 立即数
MOV DPTR,#data16 1 0 0 1 0 0 0 0 高位立即数 低位立即数
MOVX A,@DPTR 1 1 1 0 0 0 0 0
MOVX A,@Ri 1 1 1 0 0 0 1 i
MOVX @DPTR,A 1 1 1 1 0 0 0 0
MOVX @Ri,A 1 1 1 1 0 0 1 i
微机原理与接口技术──51指令机器码MOVC A,@ A+PC 1 0 0 0 0 0 1 1
MOVC A,@ A+DPTR 1 0 0 1 0 0 1 1
SWAP A 1 1 0 0 0 1 0 0
XCHD A,@Ri 1 1 0 1 0 1 1 i
XCH A,Rn 1 1 0 0 1 r r r
XCH A,direct 1 1 0 0 0 1 0 1 直接地址
XCH A,@Ri 1 1 0 0 0 1 1 i
PUSH direct 1 1 0 0 0 0 0 0 直接地址
POP direct 1 1 0 1 0 0 0 0 直接地址
二、算术运算指令
助记符指令机器指令编码
ADD A,Rn 0 0 1 0 1 r r r
ADD A,direct 0 0 1 0 0 1 0 1 直接地址
ADD A,@Ri 0 0 1 0 0 1 1 i
ADD A,#data 0 0 1 0 0 1 0 0 立即数
ADDC A,Rn 0 0 1 1 1 r r r
ADDC A,direct 0 0 1 1 0 1 0 1 直接地址
ADDC A,@Ri 0 0 1 1 0 1 1 i
ADDC A,#data 0 0 1 1 0 1 0 0 立即数
SUBB A, Rn 1 0 0 1 1 r r r
SUBB A, direct 1 0 0 1 0 1 0 1 直接地址
SUBB A, @Ri 1 0 0 1 0 1 1 i
SUBB A, #data 1 0 0 1 0 1 0 0 立即数
DA A 1 1 0 1 0 1 0 0
微机原理与接口技术──51指令机器码INC A 0 0 0 0 0 1 0 0
INC Rn 0 0 0 0 1 r r r
INC direct 0 0 0 0 0 1 0 1 直接地址
INC @Ri 0 0 0 0 0 1 1 i
INC DPTR 1 0 1 0 0 0 1 1
DEC A 0 0 0 1 0 1 0 0
DEC Rn 0 0 0 1 1 r r r
DEC direct 0 0 0 1 0 1 0 1 直接地址
DEC @Ri 0 0 0 1 0 1 1 i
MUL AB 1 0 1 0 0 1 0 0
DIV AB 1 0 0 0 0 1 0 0
三、逻辑运算指令
助记符指令机器指令编码
ANL A,Rn 0 1 0 1 1 r r r
ANL A,direct 0 1 0 1 0 1 0 1 直接地址
ANL A,@Ri 0 1 0 1 0 1 1 i
ANL A,#data 0 1 0 1 0 1 0 0 立即数
ANL direct,A 0 1 0 1 0 0 1 0 直接地址
ANL direct,#data 0 1 0 1 0 0 1 1 直接地址 立即数
ORL A,Rn 0 1 0 0 1 r r r
ORL A,direct 0 1 0 0 0 1 0 1 直接地址
ORL A,@Ri 0 1 0 0 0 1 1 i
ORL A,#data 0 1 0 0 0 1 0 0 立即数
ORL direct,A 0 1 0 0 0 0 1 0 直接地址
微机原理与接口技术──51指令机器码ORL direct,#data 0 1 0 0 0 0 1 1 直接地址 立即数
XRL A,Rn 0 1 1 0 1 r r r
XRL A,direct 0 1 1 0 0 1 0 1 直接地址
XRL A,@Ri 0 1 1 0 0 1 1 i
XRL A,#data 0 1 1 0 0 1 0 0 立即数
XRL direct,A 0 1 1 0 0 0 1 0 直接地址
XRL direct,#data 0 1 1 0 0 0 1 1 直接地址 立即数
CLR A 1 1 1 0 0 1 0 0
CPL A 1 1 1 1 0 1 0 0
RL A 0 0 1 0 0 0 1 1
RLC A 0 0 1 1 0 0 1 1
RR A 0 0 0 0 0 0 1 1
RRC A 0 0 0 1 0 0 1 1
四、控制转移指令
助记符指令机器指令编码
AJMP addrl1 a
10 a
9
a
8
0 0 0 0 1 a
7
a
6
a
5
a
4
a
3
a
2
a
1
a
SJMP rel 1 0 0 0 0 0 0 0 相对地址 rel
LJMP addr 16 0 0 0 0 0 0 1 0 a
15 ...a
8
a
7
...a
JMP @A+DPTR 0 1 1 1 0 0 1 1
JZ rel 0 1 1 0 0 0 0 0 相对地址 rel
JNZ rel 0 1 1 1 0 0 0 0 相对地址 rel
CJNE A,direct,rel 1 0 1 1 0 1 0 1 直接地址 相对偏移量 CJNE A,#data,rel 1 0 1 1 0 1 0 0 立即数 相对偏移量 CJNE Rn,#data,rel 1 0 1 1 1 r r r 立即数 相对偏移量 CJNE @Ri,#data,rel 1 0 1 1 0 1 1 i 立即数 相对偏移量 DJNZ Rn,rel 1 1 0 1 1 r r r 相对地址 rel
微机原理与接口技术──51指令机器码DJNZ direct,rel 1 1 0 1 0 1 0 1 直接地址 相对地址 rel
ACALL addrl1 a
10 a
9
a
8
1 0 0 0 1 a
7
a
6
... a
1
a
LCALL addr 16 0 0 0 1 0 0 1 0 a
15 ...a
8
a
7
...a
RET 0 0 1 0 0 0 1 0
RETI 0 0 1 1 0 0 1 0
NOP 0 0 0 0 0 0 0 0
五、位操作指令
助记符指令机器指令编码
MOV C,bit 1 0 1 0 0 0 1 0 位地址
MOV bit,C 1 0 0 1 0 0 1 0 位地址
CLR C 1 1 0 0 0 0 1 1
CLR bit 1 1 0 0 0 0 1 0 位地址
CPL C 1 0 1 1 0 0 1 1
CPL bit 1 0 1 1 0 0 1 0 位地址
SETB C 1 1 0 1 0 0 1 1
SETB bit 1 1 0 1 0 0 1 0 位地址
ANL C,bit 1 0 0 0 0 0 1 0 位地址
ANL C,bit 1 0 1 1 0 0 0 0 位地址
ORL C,bit 0 1 1 1 0 0 1 0 位地址
ORL C,/bit 1 0 1 0 0 0 0 0 位地址
JC rel 0 1 0 0 0 0 0 0 相对地址 rel
JNC rel 0 1 0 1 0 0 0 0 相对地址 rel
JB bit,rel 0 0 1 0 0 0 0 0 位地址 相对地址 rel JNB bit,rel 0 0 1 1 0 0 0 0 位地址 相对地址 rel JBC bit,rel 0 0 0 1 0 0 0 0 位地址 相对地址 rel。