1. 程式人生 > >CLD匯編指令

CLD匯編指令

下一個 單元 匯編指令 pan 指令 intel 其它 類型檢查 例如

  cld相對應的指令是std,二者均是用來操作方向標誌位DF(Direction Flag)。cld使DF 復位,即是讓DF=0,std使DF置位,即DF=1.這兩個指令用於串操作指令中。通過執行cld或std指令可以控制方向標誌DF,決定內存地址是增大(DF=0,向高地址增加)還是減小(DF=1,向地地址減小)。

串操作指令尋址方式有點特殊:

源操作數和目的操作數分別使用寄存器(e)si和(e)di進行間接尋址;沒執行一次串操作,源指針(e)si和目的指針(e)di將自動進行修改:±1、±2、±4,其對應的分別是字節操作、字操作和雙字操作。註:intel文檔使用MOVSD傳送雙字,而GNU文檔使用MOVSL傳送雙字。

例如:
MOVSB //字節串傳送 DF=0, SI = SI + 1 , DI = DI + 1 ;DF = 1 , SI = SI - 1 , DI = DI - 1;字串傳送和雙字串傳送類似。
執行操作:[DI] = [SI] ,將位於DS段的由SI所指出的存儲單元的字節或字傳送到位於ES段的由DI 所指出的存儲單元,再修改SI和DI, 從而指向下一個元素. 
在執行該指令之前,必須預置SI和DI的初值,用STD或CLD設置DF值.
MOVS DST , SRC //同上,不常用,DST和SRC只是用來用類型檢查,並不允許使用其它尋址方式來確定操作數.
1.目的串必須在附加段中,即必須是ES:[DI]


2.源串允許使用段跨越前綴來修飾,但偏移地址必須是[SI].

轉載:

http://blog.163.com/njut_wangjian/blog/static/165796425201247103054797/

CLD匯編指令