SCASB

在彙編語言中SCASB是一條字元串操作指令,源自“SCAN String Byte”的縮寫。

基本介紹

  • 中文名:彙編指令
  • 外文名:SCASB
  • 全稱:SCAN String Byte
  • 具體定義:字元串操作指令
簡介,示例代碼,命令補充引,

簡介

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的內容與由目的變址暫存器指向的附加段中的一個位元組、字或雙字進行比較,並不保存結果,只根據結果設定標誌位。

相關詞條

熱門詞條

聯絡我們