首页 理论教育 单片机原理与应用技术数据传输类指令

单片机原理与应用技术数据传输类指令

时间:2023-10-28 理论教育 版权反馈
【摘要】:数据传输类指令共29条,把源操作数送到指定的目标地址,但源操作数不改变。累加器的数据传送(6条)注:这6条指令均是由累加器实现在片内RAM之间以不同寻址方式的数据传送。8位数据指针Ri只能在片外256B范围间接寻址,16位数据指针DPTR则可在片外64KB范围间接寻址。

单片机原理与应用技术数据传输类指令

数据传输类指令(Data Transfer Instructions)共29条,把源操作数送到指定的目标地址,但源操作数不改变。指令使用频率很高,按特性可再细分为:

1.片内传送用MOV指令(16条

(1)源操作数采用立即寻址方式传送(5条)

注:对数据指针DPTR操作时,立即数高8位送入DPH,低8位送入DPL。

例:把十六进制立即数23H送入片内50H单元,有两种编程方式:

方式1: MOV 50H,#23H ;直接传送

方式2: MOV R0,#50H ;入口数据赋值R0

MOV A,#23H ;入口数据赋值A

MOV @R0,A ;间接传送(程序段只需改动入口赋值语句

(2)片内RAM之间的数据传送(5条)

注:第二和第三、第四和第五指令互为对应(间接寻址需对指针Ri或DPTR先赋值)。

例:用间接寻址把R0所指片内RAM地址(如30H)的内容送入堆栈SP中。

(3)累加器的数据传送(6条)

注:这6条指令均是由累加器实现在片内RAM之间以不同寻址方式的数据传送。

例:用累加器对片内RAM单元30H,31H清零。

2.MOVX类传送指令(4条)

该类传送指令属片外寻址操作。8位数据指针Ri只能在片外256B范围间接寻址,16位数据指针DPTR则可在片外64KB范围间接寻址。均由累加器来传送,不能用片内RAM直接传送。

注:第一和第二、第三和第四指令互为对应,使用前对指针Ri或DPTR先赋值。(www.xing528.com)

例:设片外RAM(60H)内容为09H,传送到片内RAM(20H),需由累加器传送。

例:设外扩端口地址为A000H,片内50H的数据送至该端口,需由累加器传送。

3.MOVC类传送指令(2条)

该类传送指令对程序存储器间接寻址,又称查表指令。表格通常放在程序存储器的尾部,其16位首地址称为表头。用16位PC或DPTR作基址寄存器,累加器A作变址寄存器,基址的内容与变址的内容相加,产生新的16位地址,再把新地址单元的内容送入累加器。

第一条指令作远程查表(64KB内),先用表头对基址寄存器DPTR赋值,变址寄存器A装入偏移量(范围256B)。第二条指令作近程查表,用PC当前值(自身存储地址加1的值)作基址,变址寄存器A的内容为8位无符号数,其偏移量只能在当前PC值之后的256B范围内。实际编程时,表头可用字符标号代替程序存储器的绝对地址,写法举例:

查表结果:A的内容是表格TAB中的数据02H。

4.XCH、XCHD、SWAP类指令(5条)

该类指令用于片内RAM和累加器A之间的全字节交换、半字节交换或高低4位数据交换。

(1)全字节交换指令

(3)高4位与低4位交换

例:在硬件译码的LED数码管显示时,把两个4位BCD码装入累加器A后,先送出高4位作显示,然后把低4位换到高4位,再送出作显示,该指令使控制变得简单容易。

5.PUSH、POP类指令(2条)

该类指令用于执行数据压入或弹出堆栈的操作,以保护和恢复现场。数据对象是片内低128字节RAM和特殊功能寄存器SFR的内容。

例:设当前采用的是工作寄存器0区,把R0和DPTR入栈保护和出栈恢复。

注意:

1)堆栈操作遵循先入后出的原则,否则数据恢复会发生混乱。

2)单片机上电复位或手动复位后,堆栈SP的默认值为07H,大于07H以上的存储单元全属于堆栈范围,编程时主程序段必须先把堆栈SP移到高端,堆栈的位置以留足现场保护等所需的空间为度。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈