首页
基础教程 | 单片机设计实例 | 常用芯片 | 电子基础
当前位置:单片机教程 >> 单片机设计实例 >> 浏览文章 今天是:
单片机设计实例

数据传送指令

作者:    来源:本站原创    点击数:   更新时间:2007年09月17日   
 

表 3-2 数据传送指令

操作码

目标操作数

可选择的源操作数

说 明

MOV

A

Rn

direct

@Ri

DPTR

Rn;direct;@Ri;# data

A;direct;# data

A;Rn;direct;@Ri;# data

A;direct;# data

# data16

内部传送

内部传送

内部传送

内部传送

数据指针赋值

PUSH

POP

隐含(SP)

direct

direct

隐含(SP)

压栈,只能用直接寻址

退栈,只能用直接寻址

XCH

A

Rn; direct; @Ri

内部交换

XCHD

SWAP

A

A

@Ri

隐含A

只交换低四位

A的高、低四位互换

MOVX

A

@Ri

@DPTR

@Ri; @DPTR

A

A

A与外部数据存储器间传送

MOVC

A

@A+DPTR; @A+PC

读外部程序存储器

MOV

C

bit

bit

C

Cy与可寻址位间传送

1. 数据传送指令的一般性说明

ê 指令的一般格式: 操作码 目标操作数,源操作数

操作码 说明操作的性质

操作内容一般为 (目标操作数)(源操作数)

ê 8位操作数的形式有A、Rn、direct、@Ri、# data 等五种

16位操作数的形式有DPTR 与 # data16

1位操作数的形式有 C 与 bit

ê 目标与源应同类型,且有规定的允许搭配,一般可逆。

A及direct可全搭配,@Ri、Rn不能相互搭配,# data只可作源.。

ê 传送指令一般不影响标志位。

直接改写PSW的情况除外,改写Acc影响P标志。

2. 内部数据传送指令(MOV)

ê 内部RAM、特殊功能寄存器(SFR)之间的数据传送。

ê 注意立即数 #XXH与直接地址XXH 的区别。

ê @Ri指针使用要点:①与循环配合,适用于连续数据区的操作。

②Ri应先赋确定值。i=0,1。

③是XCHD指令唯一的源操作数。

3. 外部数据传送(MOVX)

ê 以指针方式读、写外部数据存储器或I/O端口。

ê @DPTR提供16位地址指针,可访问总线扩展的整个64k空间。

ê @Ri只提供低8位地址指针,适用于256个地址的小规模总线扩展。

或者由P2口以I/O方式提供高8位(页) 地址,采用页访问模式。例如:

MOV P2,#30H ;由P2口提供高8位地址30H

MOV R0,#0 ;低8位地址为00H

MOVX A,@R0 ;读(3000H)单元

ê 应用例:将内部30H~40H单元的内容送外部数据存储器,从4000H单元开始存放。


MOV R0,#30H

MOV R2,#17

MOV DPTR,#4000H

LOOP: MOV A,@R0

MOVX @DPTR,A

INC R0

INC DPTR

DJNZ R2,LOOP

;设置(内部)源指针初值

;设置循环计数器初值

;设置(外部)目标指针初值

;循环入口,读源数据

;写目标数据

;源指针下移

;目标指针下移

;循环计数器减一,不为0则继续循环


4. 读外部程序存储器(MOVC)

ê 读取外部程序存储器中的数据,用于查表。

ê MOVC A,@A+PC ;(A)((A)+(PC)+1)

PC为本指令的地址,取指令后加一。

变址偏移量(A)是8位无符号数,因此查表的范围在(PC)+1 ~ (PC)+255。

ê MOVC A,@A+DPTR ;(A)((A)+(DPTR))

DPTR是16位指针,因此查表的范围为全64k空间。

ê 点此在新窗口浏览图片应用例:查Y(x)函数表。

3000H MOV A,#表元素序号

3002H ADD A,#表头偏移量

3004H MOVC A, @A+PC

¼¼

ORG 30A0H

TABLE: DB 17,22,34,58,82,103

表头偏移量=表头地址-(MOVC指令地址+1)

转载须保留地址:http://www.51hei.com/mcu/280.html

5. 栈操作数据传送指令(PUSH / POP)

ê 堆栈在内部RAM区。

ê PUSH和POP的对象可以是内部RAM单元或SFR。

ê 寻址方式只能用direct。例如,

PUSH 30H ;(SP)(SP)+1,((SP))(30H)

POP DPH ;(DPH)((SP)),(SP)(SP)-1

6. 交换(XCH / XCHD /SWAP)

ê XCH 字节交换:A与内部RAM单元或SFR交换。例如

XCH A,R2 ;(A)«(R2)

ê XCHD 半字节交换:A与内部RAM单元进行低四位交换,只能用寄存器间址@Ri。例如

XCHD A,@R1 ;(A)D0- D 3 «((R1))D0- D 3

ê SWAP A ;(A)D0- D 3 «(A)D4- D 7

ê 应用例:拆字,将压缩BCD码扩展为单字节BCD码。

点此在新窗口浏览图片
《堆栈数据传送指令》

MOV R0, #30H ; 设立指针

MOV A, #0 (A)=0

XCHD A, @R0 (A)=0BH

MOV R4, A ;(R4)=0BH

XCH A,30H ;(A)=30H

SWAP A ;(A)=03H

MOV R3,A ;(R3)=03H




 
发表评论】【告诉好友】【打印此文】【收藏此文】【关闭窗口
下一篇:算术运算指令
网友评论(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
 >> 推荐文章
单片机USB-ISP下载线制作
自制单片机实验板
单片机一键多功能按键识别设
 >> 阅读排行
keil教程
单片机电子时钟设计
单片机DS18B20水温控制系统
单片机交通灯设计
单片机课程设计
单片机时钟设计
单片机数字钟设计
单片机键盘程序(4×4矩阵式
单片机串口通讯
单片机秒表设计
 >> 相关文章
  • 暂无相关链接
  • 站长:刘兴国 站长信箱:372xcom1@21cn.com
    单片机教程 @ www.51hei.com 2007-2008