Секреты ассемблирования дизассемблерных листингов

         

результат непосредственной трансляции дизассемблерного листинга


Анализ показывает, что 90% ошибок связаны с неверным определением типа процессора "instruction or register not accepted in current CPU mode". Ах, да! По умолчанию IDA Pro выбирает "MetaPC (disassemble all 32-bit opcodes)", но забывает поместить соответствующую директиву в дизассемблерный листинг, а транслятор по умолчанию устанавливает 8086 ЦП, совершенно не совместимый с 32-разрядным режимом.

Материмся, лезем в начало листинга, вставляем директиву ".386", после чего повторяет сеанс трансляции заново. И опять куча ошибок (правда, на этот раз чуть меньше ста, что не может не радовать). Смотрим, что не понравилось транслятору: "demo_1.asm(34):error A2008:syntax error:flat". Хм?! Открываем demo_1.asm, переходим к строке 34 и видим: "model flat". А точка где?! Кто ее будет ставить? Абель что ли? Возвращаем точку на место, заодно добавляя квалификатор языка Си: ".model flat,C" и вновь прогоняем программу через транслятор. На этот раз MASM едет крышей настолько, что выпадает в soft-ice (если тот был предварительно запущен) или выбрасывает знаменитое сообщение о критической ошибке.



Содержание раздела