CLD彙編指令

2022-02-14 20:37:16 字數 749 閱讀 2312

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].

**:

關於彙編指令CLD和STD指令

cld指令功能 將標誌暫存器flag的方向標誌位df清零。在字串操作中使變址暫存器si或di的位址指標自動增加,字串處理由前往後。例如,以下三條指令執行後,si自動加1,更新為0001h cldmov si,0000h lodsb 將字串中的si指標所指的乙個位元組裝入al 又如,以下三條指令執行後...

彙編問題rep movsb 和 cld 是什麼意思

先說說movsb move string byte 即字串傳送指令,這條指令按位元組傳送資料。通過si和di這兩個暫存器控制字串的源位址和目標位址,比如ds si這段位址的n個位元組複製到es di指向的位址,複製後ds si的內容保持不變。而rep repeat 指令就是 重複 的意思,術語叫做 ...

mo彙編指令 彙編指令大全

一 資料傳輸指令 它們在存貯器和暫存器 暫存器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓...