Здравствуйте вот есть код Код (Text): cmp byte [eax],'.' je next соответсвенно я пытаюсь сделать сравнение значения помещенного в eax с точкой и если они равны то перейти дальше... но при компиляции масм пишет о неправильной инструкции операнда почему так происходит? спасибо
RuAsm В фасме ничего не значит А вообще dword ptr [eax] интерпретируется как "указатель на dword по адресу в еах". n0name А если в еах будет '...*' ? Условие будет не выполнено. Правильнее так: Код (Text): and eax,00FFFFFFh ; сбросить 4й байт cmp eax,'...' ; теперь можно сравнивать три остальных
rewo, если вы пытаетесь получить список файлов, то такой способ сравнения не подходит (cmp byte [eax],'.'), т.к. имя папки или файла может начинаться с точки, т.е. стоит ещё проверять следующий байт после '..' и '.' является ли он нулем
Если в маске * или *.*, то можно пропускать первые два результата, т.к. они всегда '.' и '..'. Или не всегда?