单片机系统指令的数据传送类指令
格式:MOV或MOVX或MOVC ,
将源操作数复制给目的操作数,源操作数不变,而不是“
搬家”。数据传送类指令不影响标志位Cy、Ac和OV,影响奇偶标志位P。
一、以累加器为目的操作数的指令
MOV A, Rn ; (Rn)→A,n=0~7
MOV A, @Ri ; ((Ri))→A,i=0,1
MOV A, direct ;(direct)→A
MOV A, #data ; #data→A
二、以Rn为目的操作数的指令
MOV Rn, A ; (A)→Rn, n=0~7
MOV Rn, direct ;(direct)→Rn, n=0~7
MOV Rn, #data ; #data→Rn, n=0~7
三、以直接地址direct为目的操作数的指令
MOV direct, A ; (A)→direct
MOV direct, Rn ;(Rn)→direct, n=0~7
MOV direct1, direct2;
MOV direct, @Ri ;((Ri))→direct
MOV direct, #data ; #data→direct
注意:寄存器之间不可相互传送数据;
直接地址之间可相互传送数据。
直接寻址方式(直接给出操作数的单元地址)
寻址范围:
1、内部RAM的128个单元(00-7FH)
2、特殊功能寄存器(80-FFH) ,注意SFR区单元除了以单元地址的形式外,还可用寄存器符号的形式给出,如:
MOV A,80H 与 MOV A,P0是等价的。
直接寻址方式是访问特殊功能寄存器的唯一寻址方式
四、以寄存器间接地址为目的操作数的指令
MOV @Ri, A ;(A)→((Ri)),i=0,1
MOV @Ri, direct ;(direct)→((Ri))
MOV @Ri, #data ; #data→((Ri))
五、16位数传送指令
MOV DPTR, #data16 ; #data16→DPTR
唯一的16位数据的传送指令,
立即数的高8位送入DPH,
立即数的低8位送入DPL。
六、堆栈操作指令
内部RAM中可以设定一个后进先出(LIFO-Last In First Out)的区域称作堆栈,堆栈指针SP始终指向堆栈的
栈顶位置。
1、进栈指令 PUSH direct
先将栈指针SP加1,然后把direct中的内容送到SP指示的内部RAM单元中
2、出栈指令 POP direct
SP指示的栈顶(内部RAM单元)内容送入direct字节单元
中,栈指针SP减1
七、累加器A与外部数据存储器传送指令
MOVX A, @DPTR ;((DPTR))→A,读外部RAM/IO
MOVX A, @Ri ;((Ri))→A,读外部RAM/IO
MOVX@DPTR, A ;(A)→((DPTR)),写外部RAM/IO
MOVX@Ri, A ;(A)→((Ri)),写外部RAM/IO
功能:A与外部RAM存储器传送数据,RD*(P3.7)或WR*(P3.6)信号有效。
1、采用DPTR间接寻址时,高8位地址(DPH)由P2口输出,低8位地址(DPL)由P0口输出。
2、采用Ri(i=0,1)间接寻址时,可寻址片外256个单元的数据存储器。Ri内容(地址)由P0口输出。
3、数据均由P0口输出。
八、查表指令
用于读程序存储器(内外)中的表格数据的指令,仅两条
,均采用基址寄存器加变址寄存器间接寻址方式。
1、MOVC A,@A+PC
(1) 以PC作为基址寄存器,A为变址寄存器;
(2) 两寄存器的内容相加,得到一个16位的地址;
(3) 取出此地址中的数据,传送给ACC。
注意:PC中的内容为下一条指令的起始地址,PSEN信号有效(作用同RD*、WR*)。
2、MOVC A,@A+DPTR
(1) 以DPTR 作为基址寄存器,A为变址寄存器;
(2) 两寄存器的内容相加,得到一个16位的地址;
(3) 取出此地址中的数据,传送给ACC。
如 (DPTR)=8100H (A)=40H 执行指令
MOVC A, @A+DPTR
执行结果将程序存储器中8140H的内容送入A。
本指令的执行结果只和指针DPTR及累加器A的内容有关,
与该指令存放的地址及常数表格存放的地址无关,因此表格的
大小和位置可以在64K程序存储器中任意安排,一个表格可以
为各个程序块公用。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!