5、80C51数据传送指令 101101

合集下载

80C51控制转移类指令及位操作指令101101

80C51控制转移类指令及位操作指令101101
程序回到断点0123H处继续执行。清除内部相 应的中断状态寄存器。
磨砺当如百炼之金,急就者,非邃养;
例:从P1.7引脚输出5个方波
MOV R2,#11
;5个方波,10个状态
LOP:
CPL P1.7
;P1.7状态变反
LCALL Delay
DJNZ R2 ,LOP
HERE:SJMP HERE
Delay:
所调用的子程序的首地址可以在64 KB范围内。
磨砺当如百炼之金,急就者,非邃养;
例:设(SP)=60H,(PC)=0123H,子程序 SUBRTN的首地址为3456H。 执行指令为 LCALL SUBRTN
磨砺当如百炼之金,急就者,非邃养;
3.5.5 返回指令
例:设(SP)=62H,RAM中的(62H)=0lH,(61H)=26H。 子程序SUBRTN的首地址为3456H。 执行指令:LCALL SUBRTN 执行结果:(PC)+3=0123H+3=0126H→(PC)。
执行指令:
MOV
DPTR,#800H
MOV
R0,#20H
MOV
R7,#10H
AGAIN:MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7,AGAIN
?:请将以上循环控制改用CJNE指令来实现 ?:请将以上循环控制改用JZ指令来实现
磨砺当如百炼之金,急就者,非邃养;
无条件转移指令
指令 SJMP rel AJMP addr11 LJMP addrl6 JMP @A+DPTR 这类指令的功能是程序无条件地转移到各自指定 的目标地址去执行,不同的指令形成的目标地址不同。
磨砺当如百炼之金,急就者,非邃养;

80c51指令定义详解

80c51指令定义详解

附录C 指令定义详解①符号说明符 号说 明←表示数据传送方向()表示单元的内容(())表示间接寻址的内容rrr8个工作寄存器之一;000=R0,001=R1等dddddddd数据位aaaaaaaa地址位bbbbbbbb表示某个位的地址i通过R0 (i =0) 或R1 (i =1)间接寻址eeeeeeee 8位的相对地址偏移量ACALL addrll功能:绝对调用。

说明:ACALL 指令实现无条件调用位于addr11参数所表示地址的子例程。

在执行该指令时,首先将PC 的值增加2,即使得PC 指向ACALL 的下一条指令,然后把16位PC 的低8位和高8位依次压入栈,同时把栈指针两次加1。

然后,把当前PC 值的高5位、ACALL 指令第1字节的7~5位和第2字节组合起来,得到一个16 位目的地址,该地址即为即将调用的子例程的入口地址。

要求该子例程的起始地址必须与紧随ACALL 之后的指令处于同1个2KB 的程序存储页中。

ACALL 指令在执行时不会改变各个标志位。

示例:SP 的初始值为07H ,标号SUBRTN 位于程序存储器的0345H 地址处,如果执行位于地址0123H 处的指令:ACALL SUBRTN那么SP 变为09H ,内部RAM 地址08H 和09H 单元的内容分别为25H 和01H ,PC 值变为0345H 。

指令长度(字节数):2。

指令执行周期:2。

指令二进制编码:aaa10001 aaaaaaaa注意:aaa 是11位目标地址addr11的A10~A8位,aaaaaaaa 是addr11的A7~A0位。

385指令的操作:(PC) ←(PC)+2(SP) ←(SP)+1((SP)) ←(PC7-PC0)(SP) ←(SP)+1((SP)) ←(PC15-PC8)(PC10-PC0) ←页面地址ADD A ,<src-byte>功能:加法。

说明:ADD 指令可用于完成把src-byte 所表示的源操作数和累加器A 的当前值相加。

(03)第三章 80C51单片机的指令系统(2)

(03)第三章 80C51单片机的指令系统(2)
无此指令 无此指令
15
2.目的地址传送指令 2.目的地址传送指令
MOV DPTR,#data16
data16是16位二进制数 data16是16位二进制数 是唯一的一条16位立即数传送指令 是唯一的一条16位立即数传送指令
执行:MOV 执行:MOV
DPTR,#1234H后 DPTR,#1234H后
回顾
单片机的存储器
ROM:片内、 ROM:片内、片外统一编址
物理上分开,但逻辑上不分开 物理上分开,
RAM:片内、片外(含片内扩展) RAM:片内、片外(含片内扩展)分别编址
物理上、逻辑上都分开 物理上、
寻址方式
有7种寻址方式
1
寻址方式和寻址空间
寻址方式 立即寻址 直接寻址 寄存器寻址 寄存器 间接寻址 相对寻址 变址寻址 位寻址 使用变量 ROM 片内低128B RAM、SFR R0~R7、A、B、DPTR、 寄存器 CY @R0、@R1、SP @R0、@R1、@DPTR PC+偏移量(rel) @A+PC、@A+DPTR 片内RAM,80C52的高 128B只能用本方式寻址 片外RAM、片内扩展 RAM ROM ROM 片内RAM的位寻址区、 可以位寻址的SFR √ √ √ √ √ 寻址空间 操作数 目的 源 √ √ √ √ √ √ √ √
不需第三者介入,就可实现两变量的互换。 不需第三者介入,就可实现两变量的互换。
18
已知: 已知:(A)=23H,(30H)=45H 执行:XCH A,30H后 执行:XCH A,30H后
(A)=45H,(30H)=23H
已知:(A)=20H,(R1)=30H,(30H)=66H 已知:(A)=20H,(R1)=30H,(30H)=66H 执行:XCH A,@R1后 执行:XCH A,@R1后

80C51单片机指令系统

80C51单片机指令系统

80C51单片机指令汇总程序应用举例例1:MOV A, #60H将立即数60H(源操作数)送入累加器A(目的操作数)中;这是一条双字节指令,机器码为“74H 60H”,源操作数的寻址方式为立即寻址。

例2:MOV DPTR, #1808H将16位立即数1808H送入数据指针DPTR中;这是一条三字节指令,机器码是“90H 18H 08H”。

源操作数的寻址方式也使用立即寻址。

例3:MOV A, 40H将片内RAM40H单元中的内容送入累加器A;源操作数为直接寻址,40H为直接地址。

这是一条双字节指令,机器码是“E5H 40H”。

例4:MOV A, 0F0HMOV A, B以上两条指令功能完全相同,都是将寄存器B的内容送到累加器A中,前一条指令中第二个操作数采用B寄存器的单元地址表示;后一条指令中是直接用B寄存器的名称来表示。

但汇编后的机器码是完全一样的,由两个字节组成:“E5H F0H”。

例5:INC R2将当前工作寄存器R2的内容加1;这是一条单字节指令,机器码是“0AH”,指令中的操作数使用寄存器寻址方式。

该指令的机器码表示为0000 1rrr,其中的rrr与工作寄存器的编号有关,如本例中用到了R2,则rrr=010,指令执行时,会根据当前PSW寄存器中RS1、RS0的状态确定当前工作寄存器区,同时再根据机器码中rrr的值,确定所要访问的是哪一个工作寄存器,最后找到这个工作寄存器所在单元,将其中的内容加1。

例6:MOV A, @R0 ; A←((R0))该指令为单字节指令,机器码为“E6H”,指令中源操作数为间接寻址。

假设R0中的内容是3AH,而3AH单元的内容为37H,则指令的功能是,以R0寄存器的内容3AH为单元地址,把该单元中的内容37H送累加器A。

例7:设(32H)=10H,执行指令:MOV R0, #32HMOV A, @R0执行结果是:(R0)=32H,(A)=10H,(32H)=10H。

80C51指令表

80C51指令表

80C51指令表一、数据传送指令MOV A,Rn ; (Rn)→AMOV A,direct ; (direct)→AMOV A,@Ri ; ((Ri))→AMOV A,#data ; #data→AMOV Rn,A ; (A)→ RnMOV Rn,direct ; (direct)→ RnMOV Rn,#data ; #data→ RnMOV direct,A ; (A)→directMOV direct,Rn ; (Rn)→directMOV direct1,direct2 ; (direct1)→direct2MOV direct,@Ri ; ((Ri))→directMOV direct,#data ; #data→directMOV @Ri,A ; ((Ri))→AMOV @Ri,direct ; (direct)→(Ri)MOV @Ri,#data ; #data→ ((Ri))MOV DPTR,#data16 ; dataH→ DPH,data → LDPL MOVX A,@DPTR ; ((DPTR))→AMOVX @DPTR,A ; (A)→(DPTR)MOVX A,@Ri ; ((Ri))→AMOVX @Ri,A ;(A) →(Ri)MOVC A,@A+PC ; (PC)+1→PC,((A)+(PC))→ A MOVC A,@A+DPTR ; (A)+(DPTR)→APUSH direct ; (SP)+1 → SP,(direct) → (SP) POP direct ;((SP)) → (direct), (SP)-1 → SP XCH A,Rn ; (A) ←→(Rn)XCH A,direct ; (A) ←→(direct)XCH A,@Ri ; (A) ←→((Ri))XCHD A,@Ri ; (A)0~3 ←→((Ri))0~3SWAP A ; (A)0~3 ←→(A)4~7二、算术运算指令ADD A,Rn ; (A) + (Rn)→ AADD A,direct ; (A) + (direct)→ AADD A,@Ri ; (A) + ((Ri))→ AADD A,#data ; (A) + #data→ AADDC A,Rn ; (A) + (Rn) + cy→ AADDC A,direct ; (A) + (direct) + cy→ AADDC A,@Ri ; (A) + ((Ri)) + cy→ AADDC A,#data ; (A) + # data + cy→ ASUBB A,Rn ; (A) - ( Rn) - cy→ ASUBB A,direct ; (A) - (direct) - cy→ ASUBB A,@Ri ; (A) - ((Ri)) - cy→ ASUBB A,#data ; (A) - # data - cy→ AINC A ; (A) + 1 → AINC Rn ; (Rn) + 1 →RnINC direct ; (direct) + 1 →directINC @Ri ; ((Ri)) + 1 → (Ri)INC DPTR ; (DPTR) + 1 → DPTRDEC A ; (A) - 1 → ADEC Rn ; (Rn) - 1 →RnDEC direct ; (direct) - 1 →directDEC @Ri ; ((Ri)) - 1 → (Ri)MUL AB ; (A)·(B) → ABDIV AB ; (A) / (B) 商→ A , 余数→ B DA A ; 对A进行十进制调整三、逻辑操作指令ANL A,Rn ; (A)∧(Rn) → AANL A,direct ; (A)∧(direct) →AANL A,@Ri ; (A)∧((Ri)) → AANL A,#data ; (A)∧#data → AANL direct,A ; (direct)∧(A) →directANL direct,#data ; (direct)∧#data →directORL A,Rn ; (A)∨(Rn) → AORL A,direct ; (A)∨(direct) → AORL A,@Ri ; (A)∨((Ri)) → AORL A,#data ; (A)∨#data → AORL direct,A ; (direct)∨(A) →directORL direct,#data ; (direct)∨#data →directXRL A,Rn ; (A)⊕(Rn) → AXRL A,direct ; (A)⊕(direct) → AXRL A,@Ri ; (A)⊕((Ri)) → AXRL A,#data ; (A)⊕#data → AXRL direct,A ; (direct)⊕(A) →directXRL direct,#data ; (direct)⊕#data →directCLR A ; 0 → ACPL A ; (A) → ARL A ; (A)循环左移1位RLC A ; (A)带进位循环左移1位RR A ; (A)循环右移1位RRC A ; (A)带进位循环右移1位SWAP A ;(A)半字节交换四、位操作指令CLR C ; 0 → cyCLR bit ; 0 → bitSETB C ; 1 → cySETB bit ; 1 → bitCPL C ; (cy) → cyCPL bit ; (bit) → bitANL C,bit ; (cy) ∧(bit) → cyANL C,/bit ; (cy) ∧(bit) → cyORL C,bit ; (cy) ∨(bit) → cyORL C,/bit ; (cy) ∨(bit) → cyMOV C,bit ; (bit) → cyMOV bit,C ; (cy) → bit五、控制转移指令ACALL addr11 ; (PC)+2 → PC , (SP)+1 → SP;(PCL) → (SP),(SP)+1 → SP;(PCH) → (SP),addr11 → PC10~0 LCALL addr16 ; (PC)+3 → PC , (SP)+1 → SP;(PCL) → (SP),(SP)+1 → SP;(PCH) → (SP),addr16 → PCRET ; (SP) → PCH,(SP) -1 → SP;(SP) → PCL,(SP) -1 → SPRETI ; (SP) → PCH,(SP) -1 → SP;(SP) → PCL,(SP) -1 → SPAJMP add11 ; (PC)+2 → PC,;addr11 → CP10~0 LJMP add16 ; addr16 → PCSJMP rel ; (PC)+2 → PC,(PC)+ rel → PC JMP @A+DPTR ; ((A)+(DPTR))→ PCJZ rel ; (A)=0 : (PC)+2 +rel =PC; (A)≠0 : (PC)+2 =PCJNZ rel ; (A)≠0 : (PC)+2 +rel =PC; (A)=0 : (PC)+2 =PCJC rel ; (C)=1 : (PC)+2+rel =PC; (C)=0 : (PC)+2 =PCJNC rel ; (C)=0 : (PC)+2+rel =PC; (C)=1 : (PC)+2 =PCJB bit,rel ; (bit)=1 : 则(PC)+3+rel =PC; (bit)=0 : 则(PC)+3 =PCJNB bit,rel ; (bit)=0 : 则(PC)+3+rel =PC; (bit)=1 : 则(PC)+3 =PCJBC bit,rel ; (bit)=1 : 则(PC)+3+rel =PC, 0 → bit; (bit)=0 : 则(PC)+3 =PCCJNE A,direct,rel ; (A) = (direct), 则(PC)+3 → PC; (A) > (direct), 则(PC)+3+rel → PC,0 → CY; (A) < (direct), 则(PC)+3+rel → PC,1 → CY CJNE A,#data,rel ; (A) = #data, 则(PC)+3 → PC; (A) > #data, 则(PC)+3+rel → PC,0 → CY; (A) < #data, 则(PC)+3+rel → PC,1 → CY CJNE Rn,#data,rel ; (Rn) = #ata , 则(PC)+3 → PC; (Rn) > #ata, 则(PC)+3+rel → PC,0 → CY; (Rn) < #ata, 则(PC)+3+rel → PC,1 → CY CJNE @Ri,#data,rel ; ((Rn)) = #data, 则(PC)+3 → PC; ((Rn)) > #ata, 则(PC)+3+rel → PC,0 → CY; ((Rn)) < #ata, 则(PC)+3+rel → PC,1 → CY DJNZ Rn,rel ; (Rn)-1 → Rn,(Rn)=0,则(PC)+2 → PC;(Rn)≠0,则(PC)+2+rel → PCDJNZ direct,rel ; (direct)-1 → (direct),;(direct) ≠0,则(PC)+3+rel → PC;(direct)=0,则(PC)+3 → PCNOP ; 空操作。

第3章 80C51系列单片机指令系统

第3章 80C51系列单片机指令系统

一、数据传送类指令
⒈ 内RAM数据传送指令 (15条)
⒉ 16位数据传送指令
⒊ 外RAM传送指令.
(2条)
(4条)
⒋ 读ROM指令
⒌ 堆栈操作指令
(2条)
(2条)
⒍ 交换指令
(5条)
36
⒍ 交换指令(5条) 注意:必须以A为操作数!
⑴ 字节交换指令 ① XCH ② XCH ③ XCH XCHD A,Rn A,@Ri ; A←→Rn,n=0~7 ; A←→(Ri),i=0、1
MOV
A,R0
;将R0中的数据传送至A中
9
⒋ 寄存器间接寻址
间接寻址是根据操作数地址的地址寻找操作数。
R0、R1和DPTR可以作为间接寻址寄存器。
间接寻址用间址符“@”作为前缀。 【例】
MOV MOVX
A,@R0
;将以R0中内容为地址的存储 单元中的数据传送至A中
A,@DPTR;将外RAM DPTR所指存储单元
18
• MOV指令在片内RAM的允许操作图 • 不允许的操作有: • @Ri → @Ri Rn → Rn @Ri → Rn
19
【例】 (70H)=60 (60H)=20H P1=0B7H
• • • • • • • MOV R0,#70H MOV A, @R0 MOV R1,A MOV A,@R1 MOV @R0,P1 结果: (70H)= R1=
① MOV ② MOV ③ MOV Rn,A ;A→Rn,n=0~7
Rn,direct;(direct)→Rn,n=0~7 Rn,#data ;data→Rn,n=0~7
15
⑶ 以直接地址为目的字节的传送指令(5条)
① MOV ② MOV ③ MOV ④ MOV direct,A direct,Rn direct,@Ri ;A→(direct) ;Rn→(direct),n=0~7 ;(Ri)→(direct),i=0、1

第三章 80C51单片微机的指令系统1

第三章   80C51单片微机的指令系统1
28
⑶累加器 A 能对 Rn寄存器寻址;能与特殊功能寄 存器之间进行一个字节的数据传送;能对片内RAM直接 寻址;能与片内RAM单元之间进行低半字节的数据交换。 ⑷ 能用变址寻址方式访问程序存储器中的表格, 将程序存储器单元中的固定常数或表格字节内容传送 到累加器A中。
29
3.2.1 内部八位数据传送指令
读写片外RAM
MOVC
XCH XCHD SWAP PUSH POP
读ROM中数据
交换指令 交换低4位 高低位互换 入栈 出栈
26
数据传送方向及相互关系见图3–7。 数据传送类指令不影响标志位 C、 AC、 OV。对于 P标志一般不加以说明。
27
从图3–7中可以看出数据传送指令的特点有: ⑴ 可以进行直接地址到直接地址的数据传 送,能把一个并行I/O口中的内容传送到片内RAM 单元中而不必经过累加器或工作寄存器Rn。 ⑵ 用R0和R1寄存器间址访问片外数据存储 器256个字节址及片内RAM中的任一单元。用DPTR 间址访问片外全部64KB的数据存储器或I/O。
主要用于80C51内部存储器和寄存器之间的数据传送。
这类传送指令的格式为:
MOV
<目的字节>,<源字节>
把源字节的内容送到目的字节,而源字节的内
容不变。操作属于拷贝性质。
这类指令是以MOV为其助记符的,若以目的操
作数分类,可将内部八位数据传送指令分为4组。
30
⒈ 以累加器A为目的操作数的指令组
指 令 功 能 ; (A) ←(Rn) ; (A)←((Ri)) 寻址范围 R0-R7 00-FFH 00-FFH #00-#FFH MOV A,Rn
第三章
80C51单片微机的指令系统
1
3.1

5、80C51数据传送指令 101101

5、80C51数据传送指令 101101
16位常数装入数据指针DPTR,即数据高8位送入DPH 寄存器,数据低8位送入DPL寄存器。
例:执行指令 MOV DPTR,#1234H 执行结果∶(DPH)=12H,(DPL)=34H
心不可不虚,虚则义理来居;
(3) 内部RAM单元之间的数据传送指令
MOV direct,Rn
;(direct)←(Rn)
心不可不虚,虚则义理来居;
例3:求平方数(远程查表法) MOV DPTR, #TABLE MOVC A,@A+DPTR MOV 20H,A
HERE:SJMP HERE
;指向表首址 ;查表得到平方数 ;存平方数
TABLE∶DB 00H,01H,04H,09H DB 16H,25H,36H DB 49H,64H,81H
M OV A, Rn ; (A) ←(Rn)
MOV A, direct ; (A)←(direct)
MOV A, @Ri M OV Rn, A MOV direct, A MOV @Ri, A
; (A)←((Ri)) ; (Rn) ← (A) ; (direct) ←(A) ; ((Ri)) ← (A)
POP SP ;(SP)-1=2FH→SP ((SP))=(30H)=20H→SP
第三条指令为特殊情况,先执行(SP)-1=2FH,后 装入由栈顶退出的值,所以执行后(SP)=20H。
心不可不虚,虚则义理来居;
例5:检查传送结果 已知内部RAM (10H)=00H, (30H)=40H,(40H)=10H, P1口为11001010B,分析指令执行后各单元内容。
MOV R0,#30H MOV A,@R0 MOV R1,A MOV B,@R1
MOV @R1,P1 MOV P2,P1 MOV 10H,#20H 执行结果: (10H)=20H, (30H)=40H, (40H)=CAH, P1=P2=CAH, A=40H, B=10H, R0=30H, R1=40H

80C51系列单片机指令表

80C51系列单片机指令表

80C51系列单片机指令表80C51系列单片机指令以A开头的指令有18条,分别为:ACALL addr11ADD A,RnADD A,directADD A,@RiADD A,#dataADDC A,RnADDC A,directADDC A,@RiADDC A,#dataAJMP addr11ANL A,RnANL A,directANL A,@RiANL A,#dataANL direct,AANL direct,#dataANL C,bitANL C,/bit1. ACALL addr11指令名称:绝对调用指令指令代码:A10 A9 A8 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指令功能:构造目的地址,实现程序转移.其方法是以指令提供的11位地址,取代PC的低11位,而PC的高5位保持不变.操作内容:PC←(PC)+2PCl0~0←addrll字节数:2机器周期:2使用说明:由于addrll的最小值是000H,最大值是7FFH,因此地址转移范围是2KB.11. ANL A,Rn指令名称:寄存器逻辑与指令指令代码:58H~5FH指令功能:累加器内容逻辑与寄存器内容操作内容:A←(A)∧(Rn),n=0~7字节数:1机器周期:112. ANL A,direct指令名称:直接寻址逻辑与指令指令代码:55H指令功能:累加器内容逻辑与内部RAM低128单元或专用寄存器内容操作内容:A←(A)∧(diret)字节数:2机器周期:113. ANL A,@Ri指令名称:间接寻址逻辑与指令指令代码:56H~57H指令功能:累加器内容逻辑与内部RAM低128单元内容操作内容:A←(A)∧((Ri))i=0,1字节数:1机器周期:114. ANL A,#data指令名称:立即数逻辑与指令指令代码:54H指令功能:累加器内容逻辑与立即数操作内容:A←(A)∧data字节数:2机器周期:115. ANL direct,A指令名称:累加器逻辑与指令指令代码:52H指令功能:内部RAM低128单元或专用寄存器内容逻辑与累加器内容操作内容:direct←(A)∧(direct)字节数:2机器周期:116. ANL direct,#data指令名称:逻辑与指令指令代码:53H指令功能:内部RAM低128单元或专用寄存器内容逻辑与立即数操作内容:direct←(direct)∧data字节数:3机器周期:217. ANL C,bit指令名称:位逻辑与指令指令代码:82H指令功能:进位标志逻辑与直接寻址位操作内容:C←(C)∧(bit)字节数:2机器周期:218. ANL C,/bit指令名称:位逻辑与指令指令代码:B0H指令功能:进位标志逻辑与直接寻址位的反操作内容:C←(C)∧(bit)字节数:2机器周期:280C51系列单片机指令以C开头的指令有10条,分别为: CJNE A,dircet,relCJNE A,#data,relCJNE Rn,#data,relCJNE @Ri,#data,relCLR ACLR CCLR bitCPL ACPL CCPL bit1. CJNE A,dircet,rel指令名称:数值比较转移指令指令代码:B5H指令功能:累加器内容与内部RAM低128字节或专用寄存器内容比较,不等则转移。

80C51单片机指令

80C51单片机指令
对PSW的影 Cy AC OV P √√√√ √√√√ √√√√ √√√√ √√√√ √√√√ √√√√ √√√√ √√√√ √√√√
减法
加1
减1 乘法 除法 BCD调整
SUBB A,
INC
DEC MUL AB DIV AB DA A
Direct #data A Rn @Ri Direct DPTR A Rn @Ri Direct
对PSW的影 Cy AC OV P
位传送
MOV C,bit MOV bit,C
清0
CLR CLR
c bit
位修正
取 反
CPL C CPL bit
置1
SETB SETB
C bit
位逻辑运 与
ANL C,bit ANL C,/bit


ORL C,bit ORL C,/bit
C∧bit C∧bit反 C∨bit C∨bit反
类型 与

异或
循环位移 求反 清0
助记符
ANL A,
ANL direct,
ORL A,
ORL direct,
XRL A,
XRL direct, RL A RLC A RR A RRC A CPL A CLR A
Rn @Ri direct #data A #data Rn @Ri direct #data A #data Rn @Ri direct #data A #data
√××× ×××× √××× ×××× √××× ×××× √××× ×××× √××× √××× √××× √×××
类型
助记符
LJMP addr16
转 AJMP addr11
移 SJMP rel

(参考资料)80C51指令集

(参考资料)80C51指令集

代码 E8--EF
E5 E6--E7
74 F8--FF A8--AF 78--7F
F5 88—8F
85 86;87
75 F6;F7 A6;A7 76;77
90 A2 92 93 83 E2;E3 E0 F2;F3 F0 C0 D0 C8—CF C5 C6;C7 D6;D7
2.逻辑运算指令 助记符
ANL A,Rn ANL A,data ANL A,@Ri ANL A,#data ANL data,A ANL data,#data ANL C,bit ANL C,/bit ORL A,Rn ORL A,data ORL A,@Ri ORL A,#data ORL data,A ORL data,#data ORL C,bit ORL C,/bit XRL A,Rn XRL A,data XRL A,@Ri XRL A,#data XRL data,A XRL data,#data SETB C SETB bit CLR A CLR C CLR bit CPL A CPL C CPL bit RL A RLC A
助记符 AJMP addr 11 LJMP addr 16 SJMP rel
A 右移一位 A 带进位右移一位 A 半字节交换
说明 寄存器加到 A 直接字节加到 A 间接 RAM 加到 A 立即数加到 A 寄存器带进位加到 A 直接字节带进位加到 A 间接 RAM 带进位加到 A 立即数带进位加到 A 从 A 中减去寄存器和进位 从 A 中减去直接字节和进位 从 A 中减去间接 RAM 和进位 从 A 中减去立即数和进位 A加1 寄存器加 1 直接字节加 1 间接 RAM 加 1 数据指针加 1 A减1 寄存器减 1 直接字节减 1 间接 RAM 减 1 A乘B A被B除 A 十进制调整

80C51单片机指令系统汇编

80C51单片机指令系统汇编

MOVX A, @Ri
MOVX A, @DPTR
目的操作数为@Ri
MOVX @Ri, A
MOVX @DPTR, A
例6:指令执行前(DPTR)=2000H,(A) =30H,(2000H)=55H,(R0)=20H, (20H)=88H
MOVX A,@DPTR
; (A)=55H
MOVX @R0,A
(7) direct: 表示直接寻址的地址, 即8位内部数据存储器 RAM的单元地址(0~127); 特殊功能寄存器SFR的地址。对于SFR可直接 用其名称来代替其直接地址。
(8) bit: 内部数据存储器RAM中位寻址区中的位地址 特殊功能寄存器SFR中的可直接寻址位地址 或名称。
(9) @: 间接寻址寄存器或基地址寄存器的前缀, 如@Ri, @DPTR, 表示寄存器间接寻址。
目的地址转移指令地址转移指令字节数rel寻址方式利用的变量使用的空间寄存器寻址r0r7abcydptr直接寻址直接地址内部ramsfr寄存器间接寻址r0r1内部ramr0r1dptr外部ram立即寻址立即数程序存储器变址寻址dptrapca程序存储器相对寻址pcrel程序存储器位寻址位地址内部ram位寻址区可位寻址的sfr说明下列指令中源操作数的寻址方式movar7movar1movcaadptrmovap0mova88hmova88hmovcp003380c51单片机指令系统80c51指令分类按功能分数据传送指令29条算术运算指令24条逻辑运算指令及移位类指令24条控制转移类指令17条位操作类指令17条一数据传送指令29条datamovadirectmovrnmovri目的操作数为rnmovrndatamovrndirectmovrnmovdptrdata指令执行前a33hr030h30h55h指令执行后的结果

80C51系列单片机指令表

80C51系列单片机指令表
方括符[ ]表示可选项 方括符[ 标号代表指令所在地址,1-8个字母/数字,":"结尾 标号代表指令所在地址, 个字母/数字, 结尾
标号:指令的符号地址. ⑴ 标号:指令的符号地址.
① 用于一段功能程序的识别标记或控制 转移地址. 转移地址. ② 指令前的标号代表该指令的地址, 指令前的标号代表该指令的地址, 用符号表示的地址. 是用符号表示的地址. 一般用英文字母和数字组成. ③ 一般用英文字母和数字组成. 标号必须用冒号" 与操作码分隔. ④ 标号必须用冒号" :"与操作码分隔.
【例】 MOV MOV

A,3 A,3AH A,P0
单元中的数据传送至A ;将内RAM 3AH单元中的数据传送至A中 将内RAM AH单元中的数据传送至 ;将特殊功能寄存器P0口中的数据传送至A 将特殊功能寄存器P0口中的数据传送至A P0口中的数据传送至
说明: AH和 是以direct形式出现的直接地址 说明:3AH和P0是以direct形式出现的直接地址 direct 访问特殊功能寄存器SFR SFR只能采用直接寻址方 访问特殊功能寄存器SFR只能采用直接寻址方 式.
注释:指令功能说明. ⑷ 注释:指令功能说明.
注释属于非必需项, 是为便于阅读, ① 注释属于非必需项 , 是为便于阅读 , 对指令功能作的说明和注解. 对指令功能作的说明和注解. ② 注释必须以";"开始. 注释必须以" 开始.
3.1.2 指令分类
80C51共有111条指令. 80C51共有111条指令. 共有111条指令
A,R0 MOV A,R0 INC A MUL AB ;将R0中的数据传送至A中 中的数据传送至A
⒋ 寄存器间接寻址

6、80C51算术运算指令 101101

6、80C51算术运算指令 101101

这组指令的功能是将工作寄存器Rn、片内 这组指令的功能是将工作寄存器 、片内RAM单元中的内 单元中的内 间接寻址的片内RAM单元中的内容、累加器 和数据指针 单元中的内容、 容、间接寻址的片内 单元中的内容 累加器A和数据指针 DPTR的内容加 1,相加的结果仍存放在原单元中。 的内容加 ,相加的结果仍存放在原单元中。 这类指令不影响各个标志位。 这),(A)= 执行结果:乘积 3200H(12800),( )= ( ),( )=00H, , )=32H,( )= ,( )= 。 ,(OV)= ,(CY)= )=1,( )=0。 (B)= )= ,(
大著肚皮容物,立定脚跟做人;
⒉ 除法指令 DIV AB
除法指令的功能是将A中无符号 位二进制数除以 除法指令的功能是将 中无符号8位二进制数除以 中无符号 B中的无符号 位二进制数,所得商的二进制数部分存 中的无符号8位二进制数 中的无符号 位二进制数, 于 A,余数部分存于 中 , 并将 , 余数部分存于B中 并将CY和 OV置 0。 当除数 和 置 。 总是清0。 (B)=0时,结果不定,则OV置1。CY总是清 。 ) 时 结果不定, 置 。 总是清 例 : 设 ( A ) = FBH ( 251D ) , ( B ) = 12H (18D)。 ) 执行指令: 执行指令:DIV AB 执行结果: 执行结果 : ( A) = 0DH( 商为 ) , ( B) = 11H ) ( 商为13) ) 余数为I7) (余数为 ),(OV)=0,(CY)=0。 ) , ) 。
R0,#30H A,#00H A,@R0 R0 R0,#39H,AGAIN
大著肚皮容物,立定脚跟做人;
4. 带借位减法指令
SUBB SUBB SUBB SUBB A,Rn , A,drect , A,@Ri , A,#dala , ;(A)-(Rn)-(CY)→(A) - - ;(A)一(drect)一(CY)→(A) 一 一 ;(A)一((Ri))一(CY)→(A) 一 一 ;(A)-data-(CY)→(A) - -

4、80C51单片机寻址方式 101101

4、80C51单片机寻址方式 101101
日日行,不怕千万里;
寻址方式
2.直接寻址 . 在指令中直接给出操作数单元的地址,也就是指 在指令中直接给出操作数单元的地址 也就是指 令中操作数直接以存储单元地址的形式给出。 令中操作数直接以存储单元地址的形式给出。 例如: 例如:指令 MOV A,3AH , 其功能是把片内RAM中3AH单元内的数据传送给累加 中 其功能是把片内 单元内的数据传送给累加 A, 3–2所示 所示。 器A,如图3–2所示。 这种寻址方式的寻址范围只限于片内RAM。 。 这种寻址方式的寻址范围只限于片内 单元, ⑴ 低128单元,在指令中直接以单元地址形式给出。 单元 在指令中直接以单元地址形式给出。 特殊功能寄存器, ⑵ 特殊功能寄存器,直接寻址是访问大部分特殊功 能寄存器的唯一方法。 能寄存器的唯一方法。
日日行,不怕千万里;
寻址方式
3.寄存器寻址 . 在指令中将指定寄存器的内容作为操作数。 在指令中将指定寄存器的内容作为操作数。因 此指定了寄存器就能得到操作数。 此指定了寄存器就能得到操作数。 寄存器寻址方式中,用符号名称来表示寄存器。 寄存器寻址方式中,用符号名称来表示寄存器。 例如:指令 例如:指令INC R0 其功能如图 所示 所示。 其功能如图3–3所示。 寄存器寻址方式的寻址范围包括: 寄存器寻址方式的寻址范围包括: (1)四个寄存器组共32个通用寄存器。 )四个寄存器组共 个通用寄存器。 个通用寄存器 (2)部分特殊功能寄存器。 )部分特殊功能寄存器。
日日行,不怕千万里;
这些寻址位在指令中有以下4种表示方法: 这些寻址位在指令中有以下 种表示方法: 种表示方法 •直接使用位地址表示方法。 直接使用位地址表示方法。 直接使用位地址表示方法 •单元地址加位的表示方法。 单元地址加位的表示方法。 单元地址加位的表示方法 •特殊功能寄存器符号加位的表示方法。 特殊功能寄存器符号加位的表示方法。 特殊功能寄存器符号加位的表示方法 •位名称表示方法。 位名称表示方法
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
心不可不虚,虚则义理来居;
例3:求平方数(远程查表法) MOV DPTR, #TABLE MOVC A,@A+DPTR MOV 20H,A ;指向表首址 ;查表得到平方数 ;存平方数
HERE:SJMP HERE
TABLE∶DB 00H,01H,04H,09H DB 16H,25H,36H DB 49H,64H,81H
心不可不虚,虚则义理来居;
数据传送类指令
数据传送指令按功能又可分为: 内部RAM数据传送指令、 外部数据存储器读写指令、 程序存储器读指令、
数据交换指令、
堆栈操作指令。 助记符有MOV、MOVX、MOVC、XCH、XCHD、 SWAP、PUSH、POP等八种。
心不可不虚,虚则义理来居;
数据传送类指令
心不可不虚,虚则义理来居;
数据交换指令
(1) 字节交换指令XCH组 XCH A,Rn XCH A,direct XCH A,@Ri ; (A) (Rn) 、direct、@Ri
这类指令的功能是将累加器A与源操作数的字节内容互换。
例:设(R0)=30H,(A)=3FH,片内(30H)=BBH。 执行指令 XCH A,@R0
心不可不虚,虚则义理来居;
例:某应用系统外扩了8K字节RAM,要求把内部RAM的 20H~2FH单元内容发送到外部RAM的800H~80FH单元中。 执行指令: MOV DPTR,#800H MOV R0,#20H MOV R7,#10H AGAIN:MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,AGAIN
心不可不虚,虚则义理来居;
例∶请编程将片内RAM 30H单元的内容传送至片内 RAM 50H单元。
心不可不虚,虚则义理来居;
外部数据的传送指令组
这组的功能是实现累加器A与外部数据存储器之间 传送一个字节数据的指令。 只能通过累加器A采用间接寻址方式访问外部数据 存储器,有Ri和DPTR两种间接寻址方式。 采用R0或R1作间址寄存器时,可寻址256个外部数 据存储器单元。 采用16位DPTR作间址可寻址整个64KB片外数据 存贮空间,低8位(DPL)由P0口进行分时使用,高8位 (DPH)由P2口输出。
图3–7 数据传送指令示意图
心不可不虚,虚则义理来居;
心不可不虚,虚则义理来居;
;平方表02~92
例4:求平方数(近程查表) ADD A,#rel MOVC A,@A+PC MOV 20H,A ;修正偏移量 ;查表得到平方数 ;存平方数
HERE∶SJMP HERE
TABLE∶DB 00H,01H,04H,09H,16H ;平方表02~92 DB 25H,36H,49H,64H,81H 注∶rel=TABLE-(查表指令地址+1) ;MOVC指令为单字节。
心不可不虚,虚则义理来居;
例:某应用系统外扩了8K字节RAM,要求把内部RAM的20H单 元内容发送到外部RAM的800H单元中。 执行指令: MOV DPTR,#800H MOV R0,#20H MOV A,@R0 MOVX @DPTR,A
;外部数据存储器地址指针 ;内部数据存储器地址指针 ;取内部数据存储器20H单元内容 ;送外部数据存储器800H单元
心不可不虚,虚则义理来居;
例6: 将4位BCD码倒序。
设内部数据存储器2AH、2BH单元连续存放有4位BCD码数符, 试编一程序把4位BCD码数符倒序排列。
2AH a3 a2 2BH a1 a0 2AH 2BH
a0 a1 a2 a3
心不可不虚,虚则义理来居;
MOV MOV
R0,#2AH R1,#2BH
心不可不虚,虚则义理来居;
例5:检查传送结果
已知内部RAM (10H)=00H, (30H)=40H,(40H)=10H,
P1口为11001010B,分析指令执行后各单元内容。 MOV R0,#30H MOV A,@R0 MOV R1,A
MOV B,@R1
MOV @R1,P1 MOV P2,P1 MOV 10H,#20H 执行结果: (10H)=20H, (30H)=40H, (40H)=CAH, P1=P2=CAH, A=40H, B=10H, R0=30H, R1=40H
心不可不虚,虚则义理来居;
(3)累加器A的高低半字节交换指令
SWAP A 该指令将累加器A的高、低半字节交换,该操作 也可看作是四位循环指令。见图3–8。
例:设(A)=36H(0011 0110B) 执行SWAP (0110 0011B)。 A指令,执行结果为(A)=63H
由于十六进制数或BCD码都是以四位二进制数 表示,因此XCHD和SWAP指令主要用于实现十六进制 数或BCD码的数位交换。
#data16 指令中所含的16位立即数。
心不可不虚,虚则义理来居;
rel 相对转移指令中的偏移量,为8位带符号 数。为SJMP和所有条件转移指令所用。转移范围为相 对于下一条指令笫一字节地址的-128~+127。
DPTR 数据指针。 A 累加器。 B B寄存器。 C 进位标志位,是布尔处理机中的累加器, 也称之为累加位。 @ 间址寄存器的前缀标志。 ( ×) 某寄存器或某单元的内容。 ((×))由×寻址的单元中的内容。 ← 箭头左边的内容被箭头右边的内容所取代。
MOV
MOV
@Ri,direct
Rn,direct
; ((Ri)) ←(direct)
; (Rn) ←(direct)
心不可不虚,虚则义理来居;
(4)通过累加器A的数据出传送指令 M OV A, Rn MOV MOV M OV MOV MOV ; (A) ←(Rn) ; (A)←((Ri)) ; (Rn) ← (A) ; (direct) ←(A) ; ((Ri)) ← (A) A, direct ; (A)←(direct) A, @Ri Rn, A direct, A @Ri, A
MOV
SWAP MOV MOV SWAP
A,@R0
A @R0,A A,@R1 A
;2AH单元内容送A
;A的高4位与低4位交换(a2 a3)
;2BH单元内容送A ; A的高4位与低4位交换(a0 a1)
XCH
MOV HERE: SJMP
A, @R0
@R1, A HERE
;2AH与2BH单元内容交换
心不可不虚,虚则义理来居;
心不可不虚,虚则义理来居;
例:中断响应时(SP)=30H,DPTR的内容为0123H,执行入栈指 令其结果怎样? PUSH DPL ;低8位数据指针寄存器DPL内容入栈
PUSH
DPH
;高8位数据指针寄存器DPH内容入栈。
(SP)= 。
?(31H)= ,(32H)= ,
执行结果:第一条指令(SP)+1=31H→(SP),(DPL)=23H→(31H) 第二条指令(SP)+1=32H→(SP),(DPH)=01H→(32H) 所以片内RAM中,(31H)=23H,(32H)=01H, (SP)=32H。
心不可不虚,虚则义理来居;
程序存储器数据传送指令(或称查表指令)
MOVC A,@A+PC MOVC A,@A+DPTR 这两条指令的功能均是从程序存储器中读取数据 (如表格、常数等),执行过程相同,其差别是基址不同, 因此适用范围也不同。累加器A为变址寄存器,而PC、 DPTR为基址寄存器。 DPTR为基址寄存器时,允许数表存放在程序存储 器的任意单元,称为远程查表; PC为基址寄存器时,数表只能放在该指令单元往 下的256个单元中,称为近程查表。编程时需计算A值 与数表首址的偏移量。
心不可不虚,虚则义理来居;
外部数据的传送指令组
MOVX MOVX A,@R i A,@DPTR
MOVX MOVX
@Ri,A @DPTR,A
心不可不虚,虚则义理来居;
例∶请编程将片外RAM 30H单元的内容传送给片外 RAM 50H单元。 执行指令:
Mቤተ መጻሕፍቲ ባይዱV
MOV
R1,#30H
R0,#50H
MOVX A,@R1 MOVX @R0,A
执行结果 (A)=BBH,(30H)=3FH。
心不可不虚,虚则义理来居;
(2) 半字节交换指令组 XCHD A,@Ri
将Ri间接寻址单元的低4位内容与累加器A的低4位 内容互换,而它们的高4位内容均不变。 例 : 设 ( R0 ) = 20H , ( A ) = 36H ( 00110110B ) , 内 部 RAM 中 ( 20H ) = 75H (0111010lB)。 执行指令∶XCHD A,@R0 结果为 ∶(20H)=01110110B=76H, (A)=00110101B=35H。
第三章 80C51单片机指令系统
80C51单片机指令分类
80C51的指令系统,共有111条指令, 按其功能可分为五大类: ⑴ 数据传送类指令(28条); ⑵ 算术运算类指令(24条); ⑶ 逻辑运算类指令(25条);
⑷ 控制转移类指令(17 条);
⑸ 布尔操作(位)类指令(17条)。
本讲教学内容: 数据传送类指令
心不可不虚,虚则义理来居;
指令系统中使用符号说明
Rn n=0~7,表示当前寄存器组的8个通用寄存 器R0~R7 中的一个。 Ri i=0,l,可用作间接寻址的寄存器,只能是R0、 R1 两个寄存器中的一个。 direct 内部的8位地址,既可以指片内RAM的低128 个单元地址,也可以指特殊功能寄存器的地址或符号 名称,因此,direct表示直接寻址方式。 #data 指令中所含的8位立即数。
心不可不虚,虚则义理来居;
PUSH direct
(direct)
31H 30H
SP SP SP
(SP)+1;
(SP)=31H (SP)=30H
相关文档
最新文档