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

2021-09-21 06:14:34 字數 944 閱讀 4452

先說說movsb(move string byte):即字串傳送指令,這條指令按位元組傳送資料。通過si和di這兩個暫存器控制字串的源位址和目標位址,比如ds:si這段位址的n個位元組複製到es:di指向的位址,複製後ds:si的內容保持不變。

而rep(repeat)指令就是「重複」的意思,術語叫做「重複字首指令」,因為既然是傳遞字串,則不可能乙個字(節)乙個字(節)地傳送,所以需要有乙個暫存器來控制串長度。這個暫存器就是cx,指令每次執行前都會判斷cx的值是否為0(為0結束重複,不為0,cx的值減1),以此來設定重複執行的次數。因此設定好cx的值之後就可以用rep

movsb了。

cld(clear direction flag)則是清方向標誌位,也就是使df的值為0,在執行串操作時,使位址按遞增的方式變化,這樣便於調整相關段的的當前指標。這條指令與std(set direction flag)的執行結果相反,即置df的值為1。

;example:把當前資料段中偏移1000h開始

;的100個位元組資料傳送到偏移2000h開始的

;單元中

cld ;指標增值

push ds ;當前資料段,因此壓入棧中儲存

pop es ;使es=ds

mov si,1000h ;源串指標初值

mov di,2000h ;目的串指標初值

mov cx,100 ;迴圈次數

next:

lodsb ;取乙個位元組

stosb ;存乙個位元組

loop next ;迴圈cx次

;以下程式片段與上面的等價:

cld ;位址指標增值

……mov cx,100 ;迴圈cx次

next:

movsb ;每次傳送一位元組資料

loop next

;或者用更簡單的寫法:

cld……

mov cx,100

rep movsb

記憶體延時cl 記憶體頻率和CL延遲哪個重要 解答

不一定,這個主要看遊戲的記憶體讀寫方式決定的,如果遊戲的資料多依賴處理器的快取記憶體就能解決問題了,那麼cl延遲的影響會被降到很低,再或者是列的資料會比較常被訪問,那麼cl延遲的影響也會比較低。要形象的了解延遲,我們不妨把記憶體當成乙個儲存著資料的陣列,或者乙個excel 要確定每個資料的位置,每個...

cl 編譯器環境配置問題

cl 編譯器是microsoft 推出的應用於wins 平台上的c c 編譯器 類似於linux系統上的gcc,g 等。實時上vs2015整合開發環境就是呼叫cl.exe來進行原始碼編譯的,所以可以直接在shell中執行 cl option.filename.link linkoption.編譯 我...

ARM彙編和內嵌彙編

彙編指令 跳轉指令 b bl blxbx 資料處理指令 mov mvnadd adcsub rsbrsc andor eorbic cmncmp tstteq 狀態暫存器指令 mrs msrldr strldm stmmcr arm和協處理器之間資料交換 mrccond 可選的條件 rd 存放返回狀...