单片机学习传送指令
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;取原3AH单元数据到A中 ;A中原3AH单元数据与原3BH单元数据交换 ;将A中原3BH单元数据交换到3AH单元中
用堆栈实现交换:
START: PUSH 3AH PUSH 3BH POP 3AH POP 3BH
2020/5/12
;将原3AH单元数据压栈 ;将原3BH单元数据压栈 ;从栈顶弹出原3BH单元数据给3AH单元 ;从栈顶弹出原3AH单元数据给3BH单元
√
21个 SFR字节单元
√
字节地址为 X0H或X8H的
SFR 可位寻址!
直接地址direct
(80H. . .F0H)
符号指令中 可用SFR名 暂代其地址
数据指针寄存器
DPTR (16位)
wk.baidu.com
2020/5/12
√
表2-4 SFR的 名称及其分布
3.4.1 数据传送类指令(1) 传送指令是使用最频繁的一类指令 通用格式: MOV <目的操作数>,<源操作数>
2020/5/12
数据传送类指令(2)
变址寻址
源操作数
目的操作数
例:MOV SP,#6FH ;设定栈底指针
……
PUSH ACC
;将ACC、B内容保存到堆栈(保护现场)
PUSH B
……
POP B
;恢复原B 、ACC内容(恢复现场)(后进先出)
202P0/O5/1P2 ACC
用交换指令方法:
START: MOV A , 3AH XCH A , 3BH XCH A , 3AH
4条指令,12字节长
通过A转送
MOV A , 36H MOV 40H, A MOV 41H, A MOV 42H, A MOV 43H, A
5条指令,10字节长
用R0间接寻址
MOV A , 36H MOV R0 , #40H MOV @R0, A INC R0 MOV @R0, A INC R0 MOV @R0, A INC R0 MOV @R0, A 9条指令,11字节长,
P52-14 用栈交换ACC与B内容?
【例B3-6】编程将片外数据存储器2380H单元的内容传送到片内 30H单元。
ORG 0800H
MOV DPTR,#2380H ; DPTR指向片外2380H单元
MOVX A,@DPTR ;读取2380H单元内容送入A
MOV 30H,A
;存入片内30H单元
LP: SJMP LP
→ 箭头右边的内容被箭头左边的内容所取代。 2020/5/12
P.16
2.4.2 内部数据存储器空间 (RAM:随机存取存储器,可读可写,断电丢失
)
128个单元,每单元8位即1字节(8b=1B),字节地址为00H~7FH
■指寻令。址中方指式明:
操作数的方式
位地址 bit (00H~7FH)
7FH . . . 位地址 . . . 78H
可通过循环程序实现
2020/5/12
PC 2 0 0 0 H PC
PC:16位可预置加1计数器 •每取一个字节指令代码,自动加1 •执行跳转指令时将目标地址置入PC
PC(程序计数器,程序指针): 始终存放着下一条CPU要取出执
行的指令在程序存储器中的地址。 始终指向要取出执行的下一条指令 代码存放单元,
;A的内容送入A1F8H单元
HP2:020/5S/12JMP HP
【例4-3】设计一子程序,功能为:根据30H单元中的数x(0~9之 间)查平方表,求出x相应的平方y存50H单元。x和y均为单字 节数。
用DPTR作基址的方法:
地址 机器码
汇编语言源程序
ORG 0300H
0300 E5 30 PFSUB:MOV A ,30H
属“复制” ,而不是“搬家”;
2020/5/12
数据传送指令(1) 其他例:
【例B3-4】 R0内容送R7: MOV A,R0 MOV R7, A
【例B3-5】(36H)单元内容送(40H)~(43H)单元。
均用直接地址传送
MOV 40H, 36H MOV 41H, 36H MOV 42H, 36H MOV 43H, 36H
3.4 AT89C51指令系统分类介绍 111条指令,按功能分类,可分为下面5大类:
(1)数据传送类(28条) (2)算术操作类(24条 (3)逻辑运算类(25条) (4)控制转移类(17条) (5)位操作类(17条)
2020/5/12
指令中符号的意义:
P.33~34
Rn 当前寄存器区的8个工作寄存器R0~R7(n=0~7)。
;自循环
【例B3-7】编程将片外数据存储器2040H单元的内容传送到A1F8H 单元。
ORG 0600H
MOV DPTR,#2040H ;DPTR指向片外 2040H单元
MOVX A,@DPTR
;2040H单元内容送入A
MOV DPTR,#0A1F8H ;DPTR指向片外A1F8H单元
MOVX @DPTR,A
Ri 当前寄存器区中可作间接寻址寄存器的R0、R1(i=0,1)。
Direct 直接地址,内部RAM或SFR的8位字节地址。如 0E0H
#data 包含在指令中的8位立即数。如 #0EH
#data16 包含在指令中的16位立即数。如 #0A85EH
rel 相对转移指令中的偏移量,为8位的带符号补码数。
寄存器寻址 Rn
(R0~R7)
选择四个区之一的8个单元 兼作工作寄存器R0~R7使用
2.4.3 特殊功能寄存器(SFR)(CPU寄存器及各接口电路控制寄存器) P.17
■寻址方式: 指令中指明
操作数的方式
乘除寄存器 AB
累加寄存器 A
(SFR名)
√
√
累加器SFR名为ACC
√
位地址 bit (80H..F7H) 符号指令中 可用位名等 暂代其位地址
(共128个位)
128个 片内RAM字节单元
07H . . . 位地址 . . . 00H
RS1 RS0
R.7 .R0
1
1
直接地址direct
(00H~7FH)
寄存器间接寻址@Ri
(@R0、@R1)
R7
.. 1 0
R0 R7
.. 0 1
R0
2020/5/12
R7
.. 0 0
R0
由PSW中的RS1、RS0位
DPTR 数据指针,可用作16位的数据地址寄存器。
bit 内部RAM或特殊功能寄存器中的直接寻址位。
C(或Cy) 进位标志位或位处理机中的累加器。
addr11 11位目的地址
addr16 16位目的地址
@ 间接寻址寄存器前缀,如@Ri,@A+DPTR
(X) X中的内容。如(40H)
((X)) 由X寻址的单元中的内容。如((R0))也可(R0)