【汇编语言】mov 内存 内存

来源:百度知道 编辑:UC知道 时间:2024/07/02 13:39:58
数据从内存移动到内存 为什么不能这样转?非要一个中转的寄存器?

可以这样理解,内存是个仓库,寄存器是工人,如果要把东西从仓库到仓库必须要有人来搬运,因为东西不会自己走动

原理:内存只支持存放数据,不支持mov指令,不支持数据的移动,而cpu里的寄存器可以跟mov结合.

是的,一个时钟周期不允许两次内存操作,必须使用寄存器中转,硬件就是这样。

内存到内存的传送有专门的指令,所以mov就没有提供内存到内存的传送方式
那个专门的指令叫串处理指令,在串处理指令前面如果不添加重复前缀的话,串处理指令所执行的就是一个单独的内存到内存的操作
举个例子:
movsb
这条指令执行后DS:SI所指向的字节单元的内容将会传送到ES:DI所指向的字节单元
==================================================================
串处理指令和mov指令是有很大的不同的,首先最明显的就是mov的可以在操作数中指定源和目的,但串处理指令不能,它只能从DS:SI到ES:DI,另外串处理指令在执行之后还会影响SI和DI寄存器
串处理指令主要用于大量内存数据的传送【大多数内存到内存的传送都是大量的传送】,一般不用于单个数据的传送,因为对相应寄存器的初始化需要大量的指令

串处理指令在《IBM-PC汇编语言程序设计》中有详细的介绍,我就不赘述了

一般用
push A
pop B
来做内存移动