2009-09-27 46 views

回答

22

如果您使用的是像MOVSB指令,SI被视为小号乌尔斯河寄存器,而迪被视为d estination寄存器。但它们都是普通的x86寄存器。

10

我的程序集有点生疏,但是其中一个是Source Index,另一个是Destination Index。 movsb等指令将从SI指向的内存位置复制一个字节,并将其移动到DI所指向的内存位置,然后将两者都递增,因此如果要将存储在​​处的字节复制到DI+1,需要进一步的movsb指令。

0

如告诉上述二代表目标索引和Si代表源索引,当我们要移动从我们使用SI例如,MOV AX,[SI]存储器中的数据。 当我们想要将数据移动到内存中时,我们使用di。例如,MOV [二],斧

两者都是16位寄存器,并且不能被分成8位

+2

您可以同时使用MOV [SI],斧头,斧头MOV,[二],如果您使用的是简单的MOV指令,他们基本上是相同的,只是因为你可以使用MOV [BX],斧头。当你使用像MOVSB这样的指令时,CPU假定SI是源,DI是目的地,但是当你手动执行时,你可以使用两者都执行。 – Bob 2010-06-02 05:45:12

5

SI代表源索引。源索引用作指向字符串指令(LODS,MOVS或CMPS)中正在读取的当前字符的指针。源索引也可用作间接寻址时添加Bx或Bp的偏移量。
例如:

MOV [Bx + SI] , Ax 

该指令拷贝Ax的内容到存储器位置为地址为BX和SI的总和。

DI代表目标索引,用作一个指针被写入或在一个字符串指令相比当前字符。

它也可以像SI一样用作偏移量。

相关问题