第八课
数据传送类指令简介 相当于 C语言 =
数据传送类指令是使用频率最高的一类指令。 主要用来给8051单片机系统的内部和外部资源赋值、进行堆栈的存取操作等。数据
传送类指令执行前后,对程序状态字PSW一般不产生影响。按其操作方式,又可把它们分为三种.
数据传送
数据交换
栈操作。
传送指令一-MOV
Mov指令的作用区间主要是内部数据存储器和特殊功能寄存器。格式为 Mov <目的字节>,源字节:
把第二操作数指定的字节变量传送到由第一操作数指定的单元中,源字节内容不变,一般不影响别的寄存器或标志。PSW
(1) 立即数送累加器A和Rn、内部RAM、SFR。共有4条指令
@符号表示间接寻址,Ri中i=0或i=1
- MOV 56H,#21H
- MOV A,#30H
- ;MOV A,#30H
- ;MOV R0,56H
- ;MOV @R0,#56H
- MOV R0,56H
- MOV R0,#60H
- MOV @R0,#56H
- MOV P0,#80H
复制代码
间接寻址@Ri是以Ri的内容作为地址进行寻址,由于Ri为8位寄存器,所以其寻址范围可为
00H~FFH。例如,指令序列:
MOV R1,#82H
MOV A,@R1
上述指令组合对于STC8H8K64U单片机而言,其功能是将内部RAM的82H单元中的内容送
到A中。内部80H~FFH的RAM单元,只能使用这种间接寻址方式进行访问。
MOV A,82H和MOV A,DPL是等价的!
3.程序存储器向累加器A传送指令一-MOVC
对于程序存储器的访问,单片机提供了两条极其有用的查表指令:
指令格式:
MOVC A ,@A+PC;PC<- (PC) +1, (A)< - ( (A) + (PC) )
MOVC A,@A+DPTR ; (A) <- ( (A) + (DPTR) )
这两条指令采用变址寻址,以PC或DPTR为基址寄存器,以累加器A为变址寄存器,基址寄存
器与变址寄存器内容相加得到程序存储器某单元的地址值,MOVC指令把该存储单元的内容传送
到累加器A中。指今主要用于查表,即完成从程序存储器读取数据的功能。由于两条指令使用的基
址寄存器不同,因此使用范围也不同
第一条指令以PC作为基址寄存器,指令查表范围只能在以PC当前值开始后的256个字节范围
内,使表格地址空间分配受到限制。
第二条指令以数据指针DPTR为基址寄存器,由于DPTR可以通过指今来设置,表格常数可设
置在64K程序存储器的任何地址空间。若DPTR已有它用,在将表首地址赋给DPTR之前必须保护
现场,执行完查表后再予以恢复。
5.栈操作指令
堆栈区是将内部存储器的一部分区域划作专门用于堆栈的区域。堆栈区的操作规则是后进
先出(LIFO-Last In First Out),即最后存入的数据将被最先取出。
堆 区当前的栈顶地址用堆栈指针寄存器SP中的值表示,即SP始终指向栈顶。
上述两条指令完成两种基本堆栈操作: 压入堆栈(PUSH) ,弹出堆栈(POP)
堆栈中的数据以“后进先出”的方式处理,这种“后进先出”的特点由堆栈指针SP来控制,SP用来自动跟踪栈顶地址。
入栈和出栈操作过程如下:
(1) 入栈操作:先(SP) +1 - >(SP),指向栈顶的上一个空单元,然后把直接寻址单元的内容压入SP所指的单元中。
(2)出栈操作: 先弹出栈顶内容到直接寻址单元,然后 (SP)-1->(SP) ,形成新的堆栈指针。
数据传送类指令的注意事项
在数据传送类操作中应注意以下几点:
1)除了用POP或MOV指令将数据传送到PSW外,传送操作一般不影响标志位。当向累加
器中传送数据时,会影响PSW中的P标志。
2) 执行传送类指令时,把源地址单元的内容送到目的地址单元后,源地址单元中的内容不变。
3)对特殊功能寄存器SFR的操作必须使用直接寻址,也就是说,直接寻址是访问SFR的唯一方式。
4)对于8052单片机内部RAM的80H~FFH单元只能使用@Ri间接寻址方式访问。
5)将累加器A压入堆栈或弹出堆栈时,应使用PUSH ACC和POP ACC指令,不能使用PUSH A和POP A指令。
否则,程序编译会出错。因为累加器写成A或ACC在汇编语言指令中是有区别的,
使用A时,表示使用的是寄存器寻址方式:而使用ACC时,表示使用的是直接寻址方式。
- OV A,#7
- LCALL GETSQ
- LOOP:
- LJMP LOOP
- GETSQ:
- PUSH DPH
- PUSH DPL
- MOV DPTR,#TABLE
- MOVC A,@A+DPTR
- MOV R0,A
- POP DPL
- POP DPH
- RET
- TABLE: DB 00H,32H,55H,78H,54H,54H,55H,76H,90H,21H
- END
复制代码
这些指令都可以在KEIL验证,手册里面也有详细解释 |