2013-09-05 2 views
0

Я новичок в сборке и пытаюсь написать что-то вроде файлового искателя. Этот фрагмент кода я используя для сравнения с 4-буквенный маски (FASM):Как сравнить строки, размер которых больше, чем размер dword в fasm?

lea eax,[fd.cFileName] 
    push eax 
    call [lstrlen] 
    cmp dword [fd.cFileName+eax-4],'.txt'   ; extension comparing 
    je .finded 

Как изменить этот фрагмент кода для работы с 5-буквенных расширений, как «.docx»? Спасибо.

+0

Я не уверен, если оптимизация на этом уровне вручную conding на ассемблере является хорошей стратегией , –

ответ

0

Это может быть немного более сложным, если вы хотите найти без учета регистра, но что-то вроде этого:

 lea eax,[fd.cFileName] 
     push eax 
     call [lstrlen] 
     cmp eax, 5 
     jbe .not_found ; at least 6 characters name. 
     cmp dword [fd.cFileName+eax-5],'.doc'   ; extension comparing 
     jne .not_found 
     cmp byte [fd.cFileName+eax-1], 'x' 
     jne .not_found 

.found: 
; some code 


.not_found: 
; some other code...