SCASB

SCASB

SCASB
在彙編語言中SCASB是一條字符串操作指令,源自“SCAN String Byte”的縮寫。
  • 外文名:SCASB
  • 學科:計算機科學與技術、電子信息技術
  • 應用領域:程序調試
  • 領域:計算機彙編語言

簡介

SCA彙編指令SB:

計算 AL - byte of [ES:EDI] , 設置相應的标志寄存器的值;

修改寄存器EDI的值:如果标志DF為0,則 inc EDI;如果DF為1,則 dec EDI。

SCASB指令常與循環指令REPZ/REPNZ合用。例如,REPNZ SCASB 語句表示當 寄存器ECX>0 且 标志寄存器ZF=0,則再執行一次SCASB指令。

比較寄存器AL的值不相等則重複查找的字

ECX 是比較時的最大次數,每掃描一次,ECX減1,當ECX減小到0時,将停止掃描。

所以停止掃描的條件是兩個,找到了字符或者已經達到最大次數,未找到字符。

示例代碼

mov ecx, 10 ;字符串長度 (如果長度為10)

mov al,0x8b ;要查找的字符

mov edi,ebx ;字符串首地址

Scanloop_1:

repne scasb

jnz Scan_Done ;标志ZF如果為0,表示字符串中沒有0x8b這個字符。

命令補充引

repnz指令說明:重複執行其後面的指令,CX或ECX存放最多比較次數,DI或EDI存放查找表首地址,AL或AX或EAX存放想查找的内容。當(CX或ECX)= 0 或 ZF=1 退出重複,否則,(CX或ECX)自減一,執行其後的串指令。CX或ECX為0結束是因為已經查表完畢,沒有匹配到;ZF=1說明“比較的結果為0”,也就是查找到一樣的内容,說明匹配到想要查找的内容。

SCASB(字節)

SCASW(字)

SCASD(雙字)(386及其後繼機型可用)

執行的操作:

(AL) - ((destination-index)),(destination-index) ← (destination-index) +或- 1

(AX) - ((destination-index)),(destination-index) ← (destination-index) +或- 2

(EAX) - ((destination-index)),(destination-index) ← (destination-index) +或- 4

指令把AL,AX或EAX的内容與由目的變址寄存器指向的附加段中的一個字節、字或雙字進行比較,并不保存結果,隻根據結果設置标志位。

相關詞條

相關搜索

其它詞條