DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 77|回复: 0
打印 上一主题 下一主题

MCS-51数据传送指令

[复制链接]
跳转到指定楼层
楼主
发表于 2011-4-30 17:05:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
数据传送指令共有29条,数据传送指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作数等于源操作数。如果要求在进行数据传送时,目的操作数不丢失,则不能用直接传送指令,而采用交换型的数据传送指令,数据传送指令不影响标志C,AC和OV,但可能会对奇偶标志P有影响。

[1].以累加器A为目的操作数类指令(4条)
这4条指令的作用是把源操作数指向的内容送到累加器A。有直接、立即数、寄存器和寄存器间接寻址方式:

MOV A,data ;(data)→(A) 直接单元地址中的内容送到累加器A
MOV A,#data ;#data→(A) 立即数送到累加器A中
MOV A,Rn;(Rn)→(A) Rn中的内容送到累加器A中
MOV A,@Ri ;((Ri))→(A) Ri内容指向的地址单元中的内容送到累加器A

[2].以寄存器Rn为目的操作数的指令(3条)
这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中。有直接、立即和寄存器寻址方式:

MOV Rn,data ;(data)→(Rn) 直接寻址单元中的内容送到寄存器Rn中
MOV Rn,#data ;#data→(Rn) 立即数直接送到寄存器Rn中
MOV Rn,A ;(A)→(Rn) 累加器A中的内容送到寄存器Rn中

[3].以直接地址为目的操作数的指令(5条)
这组指令的功能是把源操作数指定的内容送到由直接地址data所选定的片内RAM中。有直接、立即、寄存器和寄存器间接4种寻址方式:

MOV data,data ;(data)→(data) 直接地址单元中的内容送到直接地址单元
MOV data,#data ;#data→(data) 立即数送到直接地址单元
MOV data,A ;(A)→(data) 累加器A中的内容送到直接地址单元
MOV data,Rn ;(Rn)→(data) 寄存器Rn中的内容送到直接地址单元
MOV data,@Ri ;((Ri))→(data) 寄存器Ri中的内容指定的地址单元中数据送到直接地址单元

[4].以间接地址为目的操作数的指令(3条)
这组指令的功能是把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。有直接、立即和寄存器3种寻址方式:

MOV @Ri,data ;(data)→((Ri)) 直接地址单元中的内容送到以Ri中的内容为地址的RAM单元
MOV @Ri,#data ;#data→((Ri)) 立即数送到以Ri中的内容为地址的RAM单元
MOV @Ri,A ;(A)→((Ri)) 累加器A中的内容送到以Ri中的内容为地址的RAM单元

[5].查表指令(2条)
这组指令的功能是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式:

MOVC A,@A+DPTR ;((A))+(DPTR)→(A) 表格地址单元中的内容送到累加器A中
MOVC A,@A+PC ;((PC))+1→(A),((A))+(PC)→(A) 表格地址单元中的内容送到累加器A中

[6].累加器A与片外数据存储器RAM传送指令(4条)
这4条指令的作用是累加器A与片外RAM间的数据传送。使用寄存器寻址方式:

MOVX @DPTR,A ;(A)→((DPTR)) 累加器中的内容送到数据指针指向片外RAM地址中
MOVX A, @DPTR;((DPTR))→(A) 数据指针指向片外RAM地址中的内容送到累加器A中
MOVX A, @Ri;((Ri))→(A) 寄存器Ri指向片外RAM地址中的内容送到累加器A中
MOVX @Ri,A ;(A)→((Ri)) 累加器中的内容送到寄存器Ri指向片外RAM地址中

[7].堆栈操作类指令(2条)
这4类指令的作用是把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元中。这类指令只有两条,下述的第一条常称为入栈操作指令,第二条称为出栈操作指令。需要指出的是,单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。

PUSH data;(SP)+1→(SP),(data)→(SP) 堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的单元中
POP data;(SP)→(data)(SP)-1→(SP), 堆栈指针SP所指的单元数据送到直接寻址单元中,堆栈指针SP再进行减1操作

[8].交换指令(5条)
这5条指令的功能是把累加器A中的内容与源操作数所指的数据相互交换。

XCH A,Rn;(A)←→(Rn)累加器与工作寄存器Rn中的内容互换
XCH A,@Ri;(A)←→((Ri))累加器与工作寄存器Ri所指的存储单元中的内容互换
XCH A,data;(A)←→(data)累加器与直接地址单元中的内容互换
XCHD A,@Ri;(A3-0)←→((Ri)3-0)累加器与工作寄存器Ri所指的存储单元中的内容低半字节互换
SWAP A;(A3-0)←→(A7-4)累加器中的内容高低半字节互换

[9].16位数据传送指令(1条)
这条指令的功能是把16位常数送入数据指针寄存器。

MOV DPTR,#data16;#dataH→(DPH),#dataL→(DPL)16位常数的高8位送到DPH,低8位送到DPL
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-9-23 06:34 , 耗时 0.092133 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表