組合語言求字串長度 32位

2021-08-20 11:54:15 字數 486 閱讀 7551

組合語言求字串長度,逆向中經常會出現,標記一下:

; scas(說明是32位處理器)   

;求字串長度,結果存放在 eax 中

mov edx,edi

mov edi,eax

mov ecx,-0x1 ; 將ecx 賦值為ffffffff

xor al,al

repne scas byte ptr es:[edi] ;使用 es:[edi] 中的內容與 al 相比,不等於就一直比下去。比較一次後 edi 加一。

mov eax,-0x2 ;將 eax 賦值為fffffffe; ecx 多減了一次(結尾的 0),所以這裡eax 比 ecx原始值小1

sub eax,ecx ; 求出字串長度,結果存放在 eax 中

mov edi,edx

retn

組合語言求字串長度 32位

組合語言求字串長度,逆向中經常會出現,標記一下 scas 說明是32位處理器 求字串長度,結果存放在 eax 中 mov edx,edi mov edi,eax mov ecx,0x1 將ecx 賦值為ffffffff xor al,al repne scas byte ptr es edi 使用 ...

計算字串長度 組合語言

設有一字串存放在以 buf 為首址的資料區中,其最後一字元 作為結束標誌,計算該字串的長度並輸出 datas segment buf db 20,20 dup datas ends stacks segment stacks ends codes segment assume cs codes,ds...

彙編 字串長度

眾所周知在字串變數定義之後立即利用位址計數器指標符號 string就得到字串長度。string db 你的字 len string equ string但可能有小夥伴直接就拿來用了,卻不知道為什麼 string就得到字串長度。其實 就是當前位址,string 就是當前位址減去string的初始位址,...