2009-09-27 189 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一樣用作偏移量。

相關問題