51汇编语言指令集
51单片机汇编指令集(英语翻译)
四、控制转移类指令(17种助记符)
Absolute subroutine Call Long subroutine Call Return from subroutine Return from Interruption Short Jump Absolute Jump Long Jump Compare Jump if Not Equal Decrement Jump if Not Zero Jump if Zero Jump if Not Zero Jump if the Carry flag is set Jump if Not Carry Jump if the Bit is set Jump if the Bit is Not set Jump if the Bit is set and Clear the bit No Operation
汇编Байду номын сангаас令集英文解释
符号 MOV MOVC MOVX XCH XCHD PUSH POP ADD ADDC SUBB DA INC DEC MUL DIV ANL ORL XRL CLR CPL RL RLC RR RRC SWAP ACALL LCALL RET RETI SJMP AJMP LJMP CJNE DJNZ JZ JNZ JC JNC JB JNB JBC NOP SETB 一、数据传送类指令(7种助记符) 英文
说明
对内部数据寄存器RAM和特殊功能寄存器SFR 的数据进行传送 读取程序存储器数据表格的数据传送 对外部RAM的数据传送 字节交换 低半字节交换 入栈 出栈 加法 带进位加法 带借位减法 十进制调整 加1 减1 乘法 除法 逻辑与 逻辑或 逻辑异或 清零 取反 循环左移 带进位循环左移 循环右移 带进位循环右移 低4位与高4位交换 子程序绝对调用 子程序长调用 子程序返回 中断返回 短转移 绝对转移 长转移 比较不相等则转移 减1后不为0则转移 结果为0则转移 结果不为0则转移 有进位则转移 无进位则转移 位为1则转移 位为0则转移 位为1则转移,并清除该位 空操作 位 置1
51单片机汇编指令集(附记忆方法)
51 单片机汇编指令集一、数据传送类指令( 7 种助记符)MOV(英文为Move :对内部数据寄存器RAM 和特殊功能寄存器SFR 的数据进行 传送; MOV Q Move Code )读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部 RAM 勺数据传送; XCH (Exchange) 字节交换;XCHD (Exchange low-order Digit) 低半字节交换;PUSH (Push onto Stack) 入栈;POP (Pop from Stack) 出栈; 二、算术运算类指令( 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) 除法; 三、逻辑运算类指令( 10 种助记符) ANL(AND Logic) 逻辑与;ORL(OR Logic) 逻辑或;XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零;CPL(Complement) 取反;RL(Rotate left) 循环左移;RLC(Rotate Left throught the Carry flag) RR(Rotate Right) 循环右移;RRC (Rotate Right throught the Carry flag)SWAP (Swap) 低 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 (Decreme nt 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) 空操作;五、位操作指令( 1 种助记符)CLR 位清零;SETB(Set Bit) 位置1 。
MCS-51汇编语言指令集
(A)→(Rn),n=0~7 Rn) direct) Rn) (direct)→(Rn),n=0~7 data→(Rn) data→(Rn),n=0~7 (A)→(direct) Rn) direct) (Rn)→(direct),n=0~7 (direct2)→(direct1) [(Ri)]→(direct),i=0,1 data→(direct) (A)→[(Ri)],i=0,1 (direct)→[(Ri)],i=0,1 data→[(Ri)],i=0,1
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 7ห้องสมุดไป่ตู้ 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
MOV Rn,A MOV Rn,direct MOV Rn,#data MOV direct,A MOV direct,Rn MOV direct1,direct2 MOV direct,@Ri MOV direct,#data MOV @Ri,A MOV @Ri,direct MOV @Ri,#data MOV DPTR,#data16 MOVC A,@A+DPTR MOVC A,@A+PC MOVX A,@Ri MOVX A,@DPTR MOVX @Ri,A MOVX @DPTR,A PUSH direct POP direct XCH A,Rn XCH A,direct XCH A,@Ri XCHD A,@Ri CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit MOV C,bit MOV bit,C
51单片机汇编语言指令教程(校对版)
03
02
01
00
返回前一次
2.2.3立即寻址
指令本身直接含有所需要的8位或16位的操作数。
将此数称为“立即数”(使用#标明)。如:
MOV A,#30H
;将(8位)立即数送累加器A
MOV DPTR,#2000H ;16位立即数送DPTR积存器
【注意】:MOV A,#30H MOV A,30H 两者的区别。 立即数寻址的指令长度为2或3个字节。
5,位操作指令:位传送、位置位、位运算和位控制转移等 操作。 【 特点】:按位操作而不是按字节的操作。位控转移的判 断不是检测某一个字节而是对某一个位进行检测并决定是 否进行程序转移。 这类指令基本不影响PSW的内容。
2.2 寻址方式
在指令的操作数位置上,用于表征、寻找操作数的方式定义 为“寻址方式”。
3,间址方式的指令不能访问SFR中的单元。如下面的程序 是错误的: MOV R1,#80H MOV A,@R1 (因为80H为SFR的物理地址)
MCS-51 片内 、片外 数据存储器示意图
FFH 特殊功能 寄存器 SFR
80H 7FH
通用数据 存储器
00H
片内数据存储器 256B个字节
FFFFH
注意:
片外数据 存储器 64KB
1,访问片内RAM20H存储单元; MOV A,20H
2,访问片外RAM存储单元; MOV R0,#20H MOVX A,@R0
0000H
3,尽管片内与片外的RAM单元 的00H-FFH地址相重叠但由 于指令的不同不会发生地址
混乱。
片外数据存储器 64KB个字节
2.2.5 变址寻址
操作码 OP
操作数或操作数地址 DATA 或 ADDRESS
MCS-51单片机汇编指令详解
MCS-51单片机汇编指令详解以累加器为目的操作数的指令MOV A,RnMOV A,directMOV A,@RiMOV A,#data第一条指令中,Rn代表的是R0-R7。
第二条指令中,direct就是指的直接地址,而第三条指令中,就是我们刚才讲过的。
第四条指令是将立即数data送到A中。
下面我们通过一些例子加以说明:MOV A,R1 ;将工作寄存器R1中的值送入A,R1中的值保持不变。
MOV A,30H ;将内存30H单元中的值送入A,30H单元中的值保持不变。
MOV A,@R1 ;先看R1中是什么值,把这个值作为地址,并将这个地址单元中的值送入A中。
如执行命令前R1中的值为20H,则是将20H单元中的值送入A中。
MOV A,#34H ;将立即数34H送入A中,执行完本条指令后,A中的值是3 4H。
以寄存器Rn为目的操作的指令MOV Rn,AMOV Rn,directMOV Rn,#data这组指令功能是把源地址单元中的内容送入工作寄存器,源操作数不变。
以直接地址为目的操作数的指令MOV direct,A 例: MOV 20H,AMOV direct,Rn MOV 20H,R1MOV direct1,direct2 MOV 20H,30HMOV direct,@Ri MOV 20H,@R1MOV direct,#data MOV 20H,#34H以间接地址为目的操作数的指令MOV @Ri,A 例:MOV @R0,AMOV @Ri,direct MOV @R1,20HMOV @Ri,#data MOV @R0,#34H十六位数的传递指令MOV DPTR,#data168051是一种8位机,这是唯一的一条16位立即数传递指令,其功能是将一个16位的立即数送入DPTR中去。
其中高8位送入 DPH(083H),低8位送入DPL(082H)。
例:MOV DPTR,#1234H,则执行完了之后DPH中的值为12H,DPL中的值为34H。
51单片机汇编语言
累加器减立即数和借位 累加器减直接寻址字节和借位 累加器减 1 寄存器减 1 内部 RAM 减 1 直接寻址字节减 1 累加器乘寄存器 B 累加器除以寄存器 B 累加器与寄存器 累加器与内部 RAM 累加器与立即数 累加器与直接寻址字节 直接寻址字节与累加器 直接寻址字节与立即数 累加器或寄存器 累加器或内部 RAM 累加器或立即数 累加器或直接寻址字节 直接寻址字节或累加器 直接寻址字节或立即数 累加器异或寄存器 累加器异或内部 RAM 累加器异或立即数 累加器异或直接寻址字节 直接寻址字节异或累加器 直接寻址字节异或立即数 累加器左环移位 累加器连进位标志左环移位 累加器右环移位 累加器连进位标志右环移位 累加器高 4 位与低 4 位交换 累加器取反 累加器清零 直接寻址位送 C C 送直接寻址位 C 清零 直接寻址位清零 C 取反 直接寻址位取反 C 置位 直接寻址位置位 C 与直接寻址位 C 与直接寻址位的反 C 或直接寻址位 C 或直接寻址位的反 C 置位转移
5-1
字节数 1 1 1 1 2 2 2 2 3 2 2 2 2 2 3 3 1 1 1 1 1 1 1 1 2 1 2 2 1 1 2 2 1 1 2 2 1 1 2 1 1 1 1 1
振荡周期数 12 12 12 12 12 12 12 12 24 12 24 24 24 24 24 24 24 24 24 24 24 24 12 12 12 12 24 24 12 12 12 12 12 12 12 12 12 12 12 12 24 12 12 12
51 单片机汇编语言
94( ) 95( ) 14 1m 1k 15( ) A4 84 5m 5k 54( ) 55( ) 52( ) 53( )( ) 4m 4k 44( ) 45( ) 42( ) 43( )( ) 6m 6k 64( ) 65( ) 62( ) 63( )( ) 23 33 03 13 C4 F4 E4 A2( ) 92( ) C3 C2( ) B3 B2( ) D3 D2( ) 82( ) B0( ) 72( ) A0( ) 40( )
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寄存器。
51单片机汇编语言7-指令系统-2
图3.8 数据传送指令分类
第3章
MCS-51指令系统
1. 内部 位数据传送指令 条) 内部8位数据传送指令 位数据传送指令(15条 内部8位数据传送指令共15条,主要用于MCS-51单片机内
部RAM与寄存器之间的数据传送。指令基本格式: MOV <目的操作数>,<源操作数> 1) 以累加器A为目的地址的传送指令(4条)
注意:以上传送指令的结果不影响程序状态字寄存器PSW标 志。
第3章
MCS-51指令系统
4) 以寄存器间接地址为目的地址的传送指令(3条)
助记符格式 MOV @Ri,A MOV @Ri,direct MOV @Ri,#data 机器码(B) 1111011i 1110011i direct 0111010i data 相应操作 (Ri)←A (Ri)←(direct) (Ri)←#data 指令说明 i=0,1 机器周期 1 2 1
2
第3章
MCS-51指令系统
注意:① 堆栈是用户自己设定的内部RAM中的一块专用存 储区,使用时一定先设堆栈指针,堆栈指针缺省为SP=07H。 ② 堆栈遵循后进先出的原则安排数据。 ③ 堆栈操作必须是字节操作,且只能直接寻址。将累加器 A入栈、出栈指令可以写成: PUSH/POP ACC 或 PUSH/POP 0E0H 而不能写成: PUSH/POP A ④ 堆栈通常用于临时保护数据及子程序调用时保护现场和 恢复现场。 ⑤ 以上指令结果不影响程序状态字寄存器PSW标志。
第3章
MCS-51指令系统
寄存器R0 寄存器R1 寄存器R6 内部 RAM 50 RAM:50H 内部 RAM:66H 内部 RAM:70H 50H 66H 30H 60H 60 45H 40H
51单片机汇编语言指令教程汇集
51单片机汇编语言指令教程汇集
1.MOV
MOV指令把源操作数的值复制到目的操作数。
格式如下:
MOV dest,src
dest :用于存储源操作数值的目的操作数。
src :用于取源操作数值的源操作数。
MOV指令可以把源操作数的值复制到目的操作数里,其中它的源操作数和目的操作数可以是内存单元,寄存器或立即数。
2.MVI
MVI指令把单字节立即数的值复制到其中一寄存器或内存单元。
格式如下:
MVI dest,data
dest :用于存放单字节立即数值的目的操作数。
data :用于取立即数值的立即数。
MVI指令可以把数据(data)复制到dest所指向的存储单元。
它的目的操作数可以是内存单元或寄存器,源操作数只能是8位立即数。
3.LXI
LXI指令可以把16位数据装载到左边和右边双字节寄存器中。
格式如下:
LXI rp,data
rp :用接受16位数据的双字节寄存器,它可以是BC,DE,HL或SP。
data :用于取16位立即数的立即数。
LXI指令可以把16位立即数data复制到双字节寄存器rp里。
4.LDA
LDA指令可以把存储单元中的数据装载到A寄存器中,格式如下:
LDA addr
addr :用于取存储单元数据值的存储单元地址。
LDA指令可以把存储单元addr中的数据复制到A寄存器中。
5.STA
STA指令可以把A寄存器的值存入指定的存储单元中,格式如下:
STA addr。
c51汇编语言指令集
资料转移指令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 30HDB 定义字节指令DW 定义字内容DS 定义保留一定的存贮单元数目BIT 位地址符号指令例:SAM BIT P1.0 RET 子程序返回指令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 12 ADDC A,@Ri A←A+Ri+C 12ADDC A,#data A←A+data+C 12SU BB A,Rn A←A-Rn-C 12SUBB A,direct A←A-direct-C 12 SUBB 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 48DA 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 12 ANL 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 12 ORL 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 12 XRL direct,#data dir ect←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 24 MOV 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 24 MOVC A,@A+DPTR A←程序内存的数据 24 MOVC A,@A+PC A←程序内存的数据 24 MOVX A,@Ri A←外部RAM的数据(8bit地址) 24MOVX A,@DPTR A←外部RAM的数据(16bit地址) 24MOVX @Ri,A 外部的RAM(8bit)←A 24 MOVX @DPTR,A 外部的RAM(16bit)←A 24 PUSH 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(反相) 24 ORL C,bit C←C or bit 24ORL C,/bit C←C or bit(反相) 24 MOV 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 绝对式子程序呼叫 24 LCALL 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 24 DJNZ 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:只所有可以位寻址的位。
51单片机汇编指令集(附记忆方法)
51单片机汇编指令集一、数据传送类指令(7种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(Move Code)读取程序存储器数据表格的数据传送;MOVX (Move External RAM) 对外部RAM的数据传送;XCH (Exchange) 字节交换;XCHD (Exchange low-order Digit) 低半字节交换;PUSH (Push onto Stack) 入栈;POP (Pop from Stack) 出栈;二、算术运算类指令(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) 除法;三、逻辑运算类指令(10种助记符)ANL(AND Logic) 逻辑与;ORL(OR Logic) 逻辑或;XRL(Exclusive-OR Logic) 逻辑异或;CLR(Clear) 清零;CPL(Complement) 取反;RL(Rotate left) 循环左移;RLC(Rotate Left throught the Carry flag) 带进位循环左移;RR(Rotate Right) 循环右移;RRC (Rotate Right throught the Carry flag) 带进位循环右移;SWAP (Swap) 低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) 空操作;五、位操作指令(1种助记符)CLR 位清零;SETB(Set Bit) 位置1。
51汇编指令
指令格式功能简述字节数周期一、数据传送类指令MOV A, Rn 寄存器送累加器 1 1MOV Rn,A 累加器送寄存器 1 1MOV A ,@Ri 内部RAM单元送累加器 1 1MOV @Ri ,A 累加器送内部RAM单元 1 1MOV A ,#data 立即数送累加器 2 1MOV A ,direct 直接寻址单元送累加器 2 1MOV direct ,A 累加器送直接寻址单元 2 1MOV Rn,#data 立即数送寄存器 2 1MOV direct ,#data 立即数送直接寻址单元 3 2MOV @Ri ,#data 立即数送内部RAM单元 2 1MOV direct ,Rn 寄存器送直接寻址单元 2 2MOV Rn ,direct 直接寻址单元送寄存器 2 2MOV direct ,@Ri 内部RAM单元送直接寻址单元 2 2 MOV @Ri ,direct 直接寻址单元送内部RAM单元 2 2 MOV direct2,direct1 直接寻址单元送直接寻址单元 3 2 MOV DPTR ,#data16 16位立即数送数据指针 3 2MOVX 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 2XCH A ,Rn 累加器与寄存器交换 1 1XCH A ,@Ri 累加器与内部RAM单元交换 1 1XCHD A ,direct 累加器与直接寻址单元交换 2 1XCHD A ,@Ri 累加器与内部RAM单元低4位交换 1 1 SWAP A 累加器高4位与低4位交换 1 1POP direct 栈顶弹出指令直接寻址单元 2 2PUSH direct 直接寻址单元压入栈顶 2 2二、算术运算类指令ADD A, Rn 累加器加寄存器 1 1ADD A, @Ri 累加器加内部RAM单元 1 1ADD A, direct 累加器加直接寻址单元 2 1ADD A, #data 累加器加立即数 2 1ADDC A, Rn 累加器加寄存器和进位标志 1 1ADDC A, @Ri 累加器加内部RAM单元和进位标志 1 1 ADDC A, #data 累加器加立即数和进位标志 2 1ADDC A, direct 累加器加直接寻址单元和进位标志 2 1 INC A 累加器加1 1 1INC Rn 寄存器加1 1 1INC direct 直接寻址单元加1 2 1INC @Ri 内部RAM单元加1 1 1INC DPTR 数据指针加1 1 2DA A 十进制调整 1 1SUBB A, Rn 累加器减寄存器和进位标志 1 1SUBB A, @Ri 累加器减内部RAM单元和进位标志 1 1 SUBB A, #data 累加器减立即数和进位标志 2 1SUBB A, direct 累加器减直接寻址单元和进位标志 2 1 DEC A 累加器减1 1 1DEC Rn 寄存器减1 1 1DEC @Ri 内部RAM单元减1 1 1DEC direct 直接寻址单元减1 2 1MUL AB 累加器乘寄存器B 1 4DIV AB 累加器除以寄存器B 1 4三、逻辑运算类指令ANL A, Rn 累加器与寄存器 1 1ANL A, @Ri 累加器与内部RAM单元 1 1ANL A, #data 累加器与立即数 2 1ANL A, direct 累加器与直接寻址单元 2 1ANL direct, A 直接寻址单元与累加器 2 1ANL direct, #data 直接寻址单元与立即数 3 1ORL A, Rn 累加器或寄存器 1 1ORL A,@Ri 累加器或内部RAM单元 1 1ORL A,#data 累加器或立即数 2 1ORL A,direct 累加器或直接寻址单元 2 1ORL direct, A 直接寻址单元或累加器 2 1ORL direct, #data 直接寻址单元或立即数 3 1XRL A, Rn 累加器异或寄存器 1 1XRL A,@Ri 累加器异或内部RAM单元 1 1XRL A,#data 累加器异或立即数 2 1XRL A,direct 累加器异或直接寻址单元 2 1XRL direct, A 直接寻址单元异或累加器 2 1XRL direct, #data 直接寻址单元异或立即数 3 2RL A 累加器左循环移位 1 1RLC A 累加器连进位标志左循环移位 1 1RR A 累加器右循环移位 1 1RRC A 累加器连进位标志右循环移位 1 1CPL A 累加器取反 1 1CLR A 累加器清零 1 1四、控制转移类指令类ACCALL addr11 2KB范围内绝对调用 2 2AJMP addr11 2KB范围内绝对转移 2 2LCALL addr16 2KB范围内长调用 3 2LJMP addr16 2KB范围内长转移 3 2SJMP rel 相对短转移 2 2JMP @A+DPTR 相对长转移 1 2RET 子程序返回 1 2RET1 中断返回 1 2JZ rel 累加器为零转移 2 2JNZ rel 累加器非零转移 2 2CJNE A ,#data ,rel 累加器与立即数不等转移 3 2CJNE A ,direct ,rel 累加器与直接寻址单元不等转移 3 2CJNE Rn,#data ,rel 寄存器与立即数不等转移 3 2CJNE @Ri ,#data,rel RAM单元与立即数不等转移 3 2DJNZ Rn ,rel 寄存器减1不为零转移 2 2DJNZ direct ,rel 直接寻址单元减1不为零转移 3 2NOP 空操作 1 1五、布尔操作类指令MOV C, bit 直接寻址位送C 2 1MOV bit, C C送直接寻址位 2 1CLR C C清零 1 1CLR bit 直接寻址位清零 2 1CPL C C取反 1 1CPL bit 直接寻址位取反 2 1SETB C C置位 1 1SETB bit 直接寻址位置位 2 1ANL C, bit C逻辑与直接寻址位 2 2ANL C, /bit C逻辑与直接寻址位的反 2 2ORL C, bit C逻辑或直接寻址位 2 2ORL C, /bit C逻辑或直接寻址位的反 2 2JC rel C为1转移 2 2JNC rel C为零转移 2 2JB bit,rel 直接寻址位为1转移 3 2JNB bit,rel 直接寻址为0转移continue51单片机汇编指令集(1)数据传送类指令(7种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;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 throught the Carry flag) 带进位循环左移;RR(Rotate Right) 循环右移;RRC (Rotate Right throught 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) 空操作;。
51单片机汇编语言指令教程汇集
51单片机汇编语言指令教程汇集1.MOV指令:MOV指令用于将一个值从一个寄存器或内存位置复制到另一个寄存器或内存位置。
例如,MOVA,将常数10复制到累加器A中。
2.ADD指令:ADD指令用于将两个操作数相加,并将结果保存在目标操作数中。
例如,ADDA,B将寄存器B的值与累加器A的值相加,并将结果保存在累加器A中。
3.SUB指令:SUB指令用于将源操作数减去目标操作数,并将结果保存在目标操作数中。
例如,SUBA,B将寄存器B的值减去累加器A的值,并将结果保存在累加器A中。
4.INC指令:INC指令用于将指定的操作数加1、例如,INCA将累加器A的值加15.DEC指令:DEC指令用于将指定的操作数减1、例如,DECA将累加器A的值减16.JMP指令:JMP指令用于无条件地跳转到指定的地址。
例如,JMP1000h将跳转到地址1000h处执行指令。
9. ACALL指令:ACALL指令用于调用一个子程序,其地址由指令给出,子程序结束后返回到调用指令的下一条指令。
例如,ACALL Subroutine将调用一个名为Subroutine的子程序。
10.RET指令:RET指令用于从子程序返回到调用指令的下一条指令。
例如,RET将从子程序返回。
11.NOP指令:NOP指令用于空操作,即不执行任何操作。
它通常用于延时或填充空白。
以上是一些常用的51单片机汇编语言指令,这些指令可以用于控制I/O口、进行算术运算、执行跳转和调用子程序等。
学习并熟练掌握这些指令,对于编写高效的51单片机汇编程序非常重要。
希望本文提供的51单片机汇编语言指令教程能够帮助你入门和掌握51单片机汇编语言的基本知识。
如果你想深入学习51单片机汇编语言,建议参考相关的教材或在线资源,进行更加系统和全面的学习。
51单片机汇编指令集(附记忆方法)
51单片机汇编指令集一、数据传送类指令(7种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(Move Code)读取程序存储器数据表格的数据传送;MOVX (Move External RAM) 对外部RAM的数据传送;XCH (Exchange) 字节交换;XCHD (Exchange low-order Digit) 低半字节交换;PUSH (Push onto Stack) 入栈;POP (Pop from Stack) 出栈;二、算术运算类指令(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) 除法;三、逻辑运算类指令(10种助记符)ANL(AND Logic) 逻辑与;ORL(OR Logic) 逻辑或;XRL(Exclusive-OR Logic) 逻辑异或;CLR(Clear) 清零;CPL(Complement) 取反;RL(Rotate left) 循环左移;RLC(Rotate Left throught the Carry flag) 带进位循环左移;RR(Rotate Right) 循环右移;RRC (Rotate Right throught the Carry flag) 带进位循环右移;SWAP (Swap) 低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) 空操作;五、位操作指令(1种助记符)CLR 位清零;SETB(Set Bit) 位置1。
单片机指令表汇总
51单片机指令表汇总51单片机是一种广泛应用的微控制器,其指令集是进行编程的基础。
下面将51单片机的指令表进行汇总,以帮助初学者更好地理解其指令集。
一、数据传输指令1、MOV指令:将源操作数的内容传送到目标操作数。
2、XCH指令:将两个操作数的内容互换。
3、MOVC指令:从外部存储器将数据传送到目标操作数。
4、MOVX指令:将外部存储器中的数据传送到目标操作数。
5、PUSH指令:将数据压入堆栈。
6、POP指令:从堆栈中弹出数据。
二、算术运算指令1、ADD指令:将两个操作数相加,并将结果存放在目标操作数中。
2、SUB指令:从目标操作数中减去源操作数,并将结果存放在目标操作数中。
3、MUL指令:将两个操作数相乘,并将结果存放在目标操作数中。
4、DIV指令:将目标操作数除以源操作数,并将结果存放在目标操作数中。
5、ANL指令:对目标操作数和源操作数进行按位与运算,并将结果存放在目标操作数中。
6、ORL指令:对目标操作数和源操作数进行按位或运算,并将结果存放在目标操作数中。
7、XRL指令:对目标操作数和源操作数进行按位异或运算,并将结果存放在目标操作数中。
8、CPL指令:对目标操作数进行按位取反运算,并将结果存放在目标操作数中。
9、INC指令:将目标操作数加1。
10、DEC指令:将目标操作数减1。
11、ASR指令:将目标操作数右移n位,最高位用符号位补齐。
12、LSR指令:将目标操作数右移n位,最低位用0补齐。
13、ROL指令:将目标操作数循环左移n位,最高位移入最低位。
14、ROR指令:将目标操作数循环右移n位,最低位移入最高位。
单片机汇编指令表一、概述在单片机的世界里,汇编语言扮演着举足轻重的角色。
它是一种低级语言,能够直接与硬件进行交互,提供高效的代码执行效率。
下面,我们将详细列出一些常见的单片机汇编指令,以及它们的功能。
二、指令表1、MOV指令:用于将数据从一个寄存器移动到另一个寄存器。
例如,MOV R1, R2将把 R2的内容移动到 R1中。
第三章 MCS-51汇编语言指令
RETN
JZ JNZ JC
ANL
ORL XRL RL
AND
OR XOR ROL
POP
ACALL LCALL AJMP LJMP SJMP RET
POP
CALL CALL JMP JMP JMP RET
JB
DJNZ ADD ADDC INC DA SUBB
RLC
RR RRC CPL CLR JNC JNB
标号是表示该指令所在的符号地址,一般是由字母 打头的字母数字串表示。 操作码助记符表示了指令的操作性质。
第一、第二操作数表示操作的对象。指令的操作码 部分必不可少,操作数部分有的指令没有,或只有一 个操作数。 注释部分是用户为了方便阅读程序所加的说明,可 有可无。
MCS-51单片机采用变字长存储机器指令的方式,指 令字长有单字节、双字节和三字节三种。其格式如下:
MOV A,#20H执行示意图
3.1.2 寄存器寻址 把指定的某一可寻址的工作寄存器R0~R7的内容 作为操作数。指令操作码的低3位指示所用寄存器。 如:INC R3;(R3)←(R3)+1 … RS1 RS0 …
0 0 0 * * 0 1 1
片内RAM …… 0100 0010 01000001 …… 1 ALU
编译即将源代码进行汇编,形成可执行的代码。调试 即将编译通过的可执行代码进行模拟运行,输入给定的 数据,检查运行结果是否正确。
3.2.6 MCS-51伪指令 伪指令是供汇编用的特殊指令,只是在汇编过程中产 生某种控制,或者对标号进行赋值。 伪指令在汇编时不产生机器语言指令,仅提供汇编控 制信息。 ⒈设置起始地址伪指令ORG(Origin) 格式:ORG NNNN 功能:指定目标程序或数据块在存储器中存放的起始 地址。其中NNNN为十进制或十六进制地址。
51单片机汇编指令集(附记忆方法)
51单片机汇编指令集(附记忆方法) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部RAM的数据传送; XCH (Exchange) 字节交换;XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈;POP (Pop from Stack) 出栈;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) 除法;ANL(AND Logic) 逻辑与;ORL(OR Logic) 逻辑或;XRL(Exclusive-OR Logic) 逻辑异或;CLR(Clear) 清零;CPL(Complement) 取反;RL(Rotate left) 循环左移;RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移;RRC (Rotate Right throught the Carry flag) 带进位循环右移;SWAP (Swap) 低4位与高4位交换;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)比较不相等则转移;- 1 -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) 空操作;CLR 位清零;SETB(Set Bit) 位置1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15.INC direct 16.INC @Ri 17.INC DPTR
2 1 1 1 1 1
说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标 志位 18.DEC A 19.DEC Rn 20.DEC direct 21.DEC @Ri 22.MUL AB 1 1 1 1 2 1 1 1 1 4
将直接地址的内容与常数值做OR的逻辑判断,结果存回该直接地址 将累加器的值与寄存器的值做XOR的逻辑判断,结果存回累加器 将累加器的值与直接地址的内容做XOR的逻辑判断,结果存回累加器 将累加器的值与间接地扯的内容做XOR的逻辑判断,结果存回累加器 将累加器的值与常数作XOR的逻辑判断,结果存回累加器 将直接地址的内容与累加器的值做XOR的逻辑判断,结果存回该直接地址 将直接地址的内容与常数的值做XOR的逻辑判断,结果存回该直接地址 清除累加器的值为0 将累加器的值反相 将累加器的值左移一位 将累加器含进位C左移一位 将累加器的值右移一位 将累加器含进位C右移一位 将累加器的高4位与低4位的内容交换。(A)3-0←(A)7-4
若直接地址的某位为1,则跳至rel的相关地址 若直接地址的某位为0,则跳至rel的相关地址 若直接地址的某位为1,则跳至rel的相关地址,并将该位值清除为0
SFR(80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0
间接地址Ri=R0或R1
8位常数
16位常数
16位的目标地址
11位的目标地址
相关地址
内部数据RAM(20H~2FH),特殊功能寄存器的直接地址的位
动作说明
将累加器与寄存器的内容相加,结果存回累加器 将累加器与直接地址的内容相加,结果存回累加器 将累加器与间接地址的内容相加,结果存回累加器 将累加器与常数相加,结果存回累加器 将累加器与寄存器的内容及进位C相加,结果存回累加器 将累加器与直接地址的内容及进位C相加,结果存回累加器 将累加器与间接地址的内容及进位C相加,结果存回累加器 将累加器与常数及进位C相加,结果存回累加器 将累加器的值减去寄存器的值减借位C,结果存回累加器 将累加器的值减直接地址的值减借位C,结果存回累加器 将累加器的值减间接地址的值减借位C,结果存回累加器 将累加器的值减常数值减借位C,结果存回累加器 将累加器的值加1 将寄存器的值加l
说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器 。如果积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为0 23.DIV AB 1 4
说明:无符号的除法运算,将累加器A除以B寄存器的值,商存入A,余数存入B。执行本指令后,进位位(C) 及溢出位(OV)被清除为0 24.DA A 1 1 若(A) 3-0>9或(AC)=1,则(A) 3-0←(A)3-0+6 若(A) 7-4>9或 (C)=1,则(A) 7-4←(A)7-4+6 逻辑运算指令 25.ANL A,Rn 26.ANL A,direct 27.ANL A,@Ri 28.ANL A,#data 29.ANL direct,A 1 1 2 1 1 1 2 1 2 1
51汇编语言指令集
符号定义表 符号 Rn Direct @Ri #data #data16 Addr16 Addr11 Rel bit 含义 R0~R7寄存器n=0~7 直接地址,内部数据区的地址RAM(00H~7FH) SFR(80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0 间接地址Ri=R0或R1 8位常数 16位常数 16位的目标地址 11位的目标地址 相关地址 内部数据RAM(20H~2FH),特殊功能寄存器的直接地址的位 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH)
将直接地址的内容加1 将间接地址的内容加1 数据指针寄存器值加1
,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标 将累加器的值减1 将寄存器的值减1 将直接地址的内容减1 将间接地址的内容减1 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节 存回B寄存器
则(A) 7-4←(A)7-4+6
将累加器的值与寄存器的值做AND的逻辑判断,结果存回累加器 将累加器的值与直接地址的内容做AND的逻辑判断,结果存回累加器 将累加器的值与间接地址的内容做AND的逻辑判断,结果存回累加器 将累加器的值与常数做AND的逻辑判断,结果存回累加器 将直接地址的内容与累加器的值做AND的逻辑判断,结果存回该直接地址 将直接地址的内容与常数值做AND的逻辑判断,结果存回该直接地址 将累加器的值与寄存器的值做OR的逻辑判断,结果存回累加器 将累加器的值与直接地址的内容做OR的逻辑判断,结果存回累加器 将累加器的值与间接地址的内容做OR的逻辑判断,结果存回累加器 将累加器的值与常数做OR的逻辑判断,结果存回累加器 将直接地址的内容与累加器的值做OR的逻辑判断,结果存回该直接地址
将寄存器的内容载入累加器 将直接地址的内容载入累加器 将间接地址的内容载入累加器 将常数载入累加器 将累加器的内容载入寄存器 将直接地址的内容载入寄存器 将常数载入寄存器 将累加器的内容存入直接地址 将寄存器的内容存入直接地址 将直接地址2的内容存入直接地址1 将间接地址的内容存入直接地址 将常数存入直接地址 将累加器的内容存入某间接地址 将直接地址的内容存入某间接地址
42.XRL direct,#data 3 2 43.CLR A 44.CPL A 45.RL A 46.RLC A 47.RR A 48.RRC A 49.SWAP A 数据转移指令 50.MOV A,Rn 51.MOV A,direct 52.MOV A,@Ri 53.MOV A,#data 54.MOV Rn,A 55.MOV Rn,direct 56.MOV Rn,gdata 57.MOV direct,A 58.MOV direct,Rn 59.MOV direct1, direct2 60.MOV direct,@Ri 1 1 2 1 1 1 2 1 1 1 2 2 2 1 2 1 2 2 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1
清除进位C为0 清除直接地址的某位为0 设定进位C为1 设定直接地址的某位为1 将进位C的值反相 将直接地址的某位值反相 将进位C与直接地址的某位做AND的逻辑判断,结果存回进位C 将进位C与直接地址的某位的反相值做AND的逻辑判断,结果存回进位C 将进位C与直接地址的某位做OR的逻辑判断,结果存回进位C 将进位C与直接地址的某位的反相值做OR的逻辑判断,结果存回进位C 将直接地址的某位值存入进位C 将进位C的值存入直接地址的某位 若进位C=1则跳至rel的相关地址 若进位C=0则跳至rel的相关地址
指令介绍
字 周 节 期 1 1 2 1 1 1 2 1 1 1 2 1 1 1 2 1 1 1 2 1 1 1 2 1 1 1 1 1
指令 算数运算指令 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
器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器 出标志位(OV)被设定为1,而进位标志位为0 将累加器的值除以B寄存器的值,结果的商存回累加器,余数存回B寄存器
算,将累加器A除以B寄存器的值,商存入A,余数存入B。执行本指令后,进位位(C) 将累加器A作十进制调整,
则(A) 3-0←(A)3-0+6
30.ANL direct,#data 3 2 31.ORL A,Rn 32.ORL A,direct 33.ORL A,@Ri 34.ORL A,#data 35.ORL direct,A 1 1 2 1 1 1 2 1 2 1
36.ORL direct,#data 3 2 37.XRL A,Rn 38.XRL A,direct 39.XRL A,@Ri 40.XRL A,#data 41.XRL direct,A 1 1 2 1 1 1 2 1 2 1
61.MOV direct,#data 3 2 62.MOV @Ri,A 63.MOV @Ri,direct 1 1 2 2
64.MOV @Ri,#data
2 1
65.MOV DPTR,#data16 3 2 66.MOVC A,@A+DPTR 1 2
累加器的值再加数据指针寄存器的值为其所指定地址,将该地址的内容读入累加器 67.MOVC A,@A+PC 68.MOVX A,@Ri 69.MOVX A,@DPTR 70.MOVX @Ri,A 71.MOVX @DPTR,A 72.PUSH direct 73.POP direct 74.XCH A,Rn 75.XCH A,direct 76.XCH A,@Ri 77.XCHD A,@Ri 布尔代数运算 78.CLR C 79.CLR bit 80.SETB C 81.SETB bit 82.CPL C 83.CPL bit 84.ANL C,bit 85.ANL C,/bit 86.ORL C,bit 87.ORL C,/bit 88.MOV C,bit 89.MOV bit,C 90.JC rel 91.JNC rel 1 1 2 1 1 1 2 1 1 1 2 1 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 1 2 1 2 1 2 1 2 1 2 2 2 2 2 1 1 2 1 1 1 1 1
3 2 3 2 3 2