Сношения с Идой Крис Касперски Хакер, номер #094, стр. 094-120-4 Количество ошибок сразу же уменьшается чуть ли не в три раза, и они свободно помещаются на экран, что не может не радовать! Подавляющее большинство ошибок имеют тип «missing operator in expression» (в выражении отсутствует оператор), и чем скорее мы с ними разберемся, тем будет лучше как для нас самих, так и для транслируемой программы. Переходим к строке 141 и видим: mov eax, large fs:0 push eax mov large fs:0, esp Ну и зачем ассемблерному генератору было вставлять «large»? Все равно MASM его не понимает. Находясь в интегрированном редакторе FAR'а, нажимаем <Ctrl-F7> (replace) и заменяем все «large fs» на просто «fs» (см. рис. 6) Теперь после трансляции остается совсем немного ошибок, на которые мы продолжим планомерно наступать: demo_3.asm(70) : error A2015: segment attributes cannot change : Alignment demo_3.asm(8063) : error A2189: invalid combination with segment alignment : 2048 demo_3.asm(12004) : error A2015: segment attributes cannot change : Alignment demo_3.asm(13742) : error A2005: symbol redefinition : cchMultiByte demo_3.asm(14176) : error A2005: symbol redefinition : Filename demo_3.asm(14200) : error A2005: symbol redefinition : Locale demo_3.asm(14215) : error A2005: symbol redefinition : CodePage demo_3.asm(142) : error A2206: missing operator in expression demo_3.asm(2860) : error A2206: missing operator in expression demo_3.asm(2888) : error A2206: missing operator in expression demo_3.asm(2924) : error A2006: undefined symbol : loc_402480 demo_3.asm(3639) : error A2001: immediate operand not allowed demo_3.asm(4158) : error A2006: undefined symbol : loc_402D11 demo_3.asm(1257) : error A2006: undefined symbol : $NORMAL_STATE$1535 demo_3.asm(1258) : error A2006: undefined symbol : loc_4012AA demo_3.asm(1259) : error A2006: undefined symbol : loc_4012C5 demo_3.asm(1260) : error A2006: undefined symbol : loc_401311 demo_3.asm(1261) : error A2006: undefined symbol : loc_401348 demo_3.asm(1262) : error A2006: undefined symbol : loc_401350 demo_3.asm(1263) : error A2006: undefined symbol : loc_401385 demo_3.asm(1264) : error A2006: undefined symbol : loc_401418 Беглый взгляд на листинг обнаруживает целый каскад ошибок типа «undefined symbol» (неопределенный символ). Посмотрим, что же у нас не определено на этот раз. Переходим к строке 1257, за которой тянется целый хвост ошибок в строках 1258, 1259, 1260, 1261, 1262, 1263 и 1264. Это настоящее осиное гнездо, обитель зла, которую я собираюсь разбить одним взмахом своего крыла: 1257:off_401956 dd offset $NORMAL_STATE$1535 1258: dd offset loc_4012AA 1259: dd offset loc_4012C5 |