理论教育 微机原理与接口技术第2版:数据传送类指令详解

微机原理与接口技术第2版:数据传送类指令详解

时间:2023-11-04 理论教育 版权反馈
【摘要】:数据传送类指令可以实现CPU寄存器之间、寄存器与存储器之间、累加器与I/O之间的数据传送,可以按字或字节传送,数据传送类指令不影响标志位,可以分为以下6种情况。图3.1 通用数据传送指令传送方向示意图从图3.1中可以看出,两个存储单元之间不能直接传送数据;两个段寄存器之间不能直接传送数据;立即数不能直接传送给段寄存器;立即数不可作为目的操作数。

微机原理与接口技术第2版:数据传送类指令详解

数据传送类指令可以实现CPU寄存器之间、寄存器与存储器之间、累加器与I/O之间的数据传送,可以按字或字节传送,数据传送类指令不影响标志位,可以分为以下6种情况。

1.通用数据传送指令(MOV)

通用数据传送指令可实现的传送方向如图3.1所示。

图3.1 通用数据传送指令传送方向示意图

从图3.1中可以看出,两个存储单元之间不能直接传送数据;两个段寄存器之间不能直接传送数据;立即数不能直接传送给段寄存器;立即数不可作为目的操作数

2.交换指令(XCHG)

寄存器和寄存器(或者存储单元)的数据可以交换。

3.堆栈操作指令(PUSH、POP)

压入(PUSH)与弹出(POP)堆栈指令要记住操作过程,且每次操作都是16位的。

压入数据分两步执行:

·先SP-1→SP,然后把高字节数据送至SP所指单元;

·再次使SP-1→SP,把低字节的数据送到SP所指单元。

弹出数据也分两步执行:(www.daowen.com)

·先弹出栈顶数据(低字节),修改SP,即使SP+1→SP;

·再弹出栈顶数据(高字节),再修改SP,即使SP+1→SP。

4.地址传送指令(LEA、LDS、LES)

这3条指令的功能是将存储单元的地址送入指定的存储器中。

·LEA将指定存储器操作数的16位偏移地址送入指定的8个通用的16位寄存器之一中。

·LDS将指定内存中的4字节(32位)分别装入指定的寄存器和段寄存器DS中。

·LES将指定内存中的4字节(32位)分别装入指定的寄存器和段寄存器ES中。

5.累加器专用传送指令(IN、OUT、XLAT)

这类指令包括输入/输出指令与表格查找指令。这类指令只和累加器AL或AX有关,而与AH无关。若I/O端口是16位地址,则IN、OUT指令中的地址要用DX间接寻址,决不能在指令中直接出现16位I/O地址,而8位I/O地址可直接写在输入/输出指令中。

6.标志传送指令(LAHF、SAHF、PUSHF、POPF)

LAHF指令可以通过AH得到标志寄存器低8位的值;而SAHF指令可以通过AH改变FR低8位的值。

PUSHF可以将FR的内容压入堆栈保存;POPF可以把堆栈内容弹出到FR中,从而改变FR的值。用此方法可以使标志位TF=1或者TF=0。

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

我要反馈