鍍金池/ 教程/ Java/ Assembly匯編 SCAS指令
Assembly 變量聲明
Assembly匯編 STOS指令
Assembly 條件
Assembly 尋址模式和MOV指令
Assembly匯編教程
Assembly - 什么是匯編語言
Assembly 循環(huán)
Assembly 內(nèi)存段
Assembly匯編 宏
Assembly 寄存器
Assembly匯編 遞歸
Assembly匯編 CMPS指令
Assembly匯編 內(nèi)存管理
Assembly匯編 LODS指令
Assembly 基本語法
Assembly匯編 過程
Assembly匯編 文件管理
Assembly匯編 數(shù)組
Assembly匯編 SCAS指令
Assembly 算術(shù)指令
Assembly 環(huán)境設(shè)置
Assembly匯編 字符串處理
Assembly 數(shù)字
Assembly 常量
Assembly匯編 MOVS指令
Assembly 邏輯指令
Assembly 系統(tǒng)調(diào)用

Assembly匯編 SCAS指令

SCAS指令用于搜索一個(gè)特定的字符或字符串中的字符集。要搜索的數(shù)據(jù)項(xiàng)應(yīng)該是在AL,AX(SCASW)或EAX寄存器(SCASD)的(SCASB)。被搜索的字符串應(yīng)該是在內(nèi)存中,并指出由ES:DI(或EDI)寄存器。

看看下面的程序的概念來理解:

section .text
    global _start         ;must be declared for using gcc
_start:	;tell linker entry yiibai

   mov ecx,len
   mov edi,my_string
   mov al , 'e'
   cld
   repne scasb
   je found ; when found
   ; If not not then the following code
   mov eax,4
   mov ebx,1
   mov ecx,msg_notfound
   mov edx,len_notfound
   int 80h
   jmp exit
found:
   mov eax,4
   mov ebx,1
   mov ecx,msg_found
   mov edx,len_found
   int 80h
exit:
   mov eax,1
   mov ebx,0
   int 80h
section .data
my_string db 'hello world', 0
len equ $-my_string  
msg_found db 'found!', 0xa
len_found equ $-msg_found
msg_notfound db 'not found!'
len_notfound equ $-msg_notfound   

上面的代碼編譯和執(zhí)行時(shí),它會產(chǎn)生以下結(jié)果:

found!