Вопрос № 95870: Здравствуйте уважаемые эксперты! В пакете программ MASM6.11 который я скачал с сайта для изучения Ассемблера есть отладчик CodeView. Возникли затруднения с его запуском. При вызове отладчика появляется окно и внизу строки:
CV1053 Warning: TOOLS.I...Вопрос № 95881: Списал с книги "Ассемблер под Windows" код который создает простейшее окно, С помощью MASM пытался создать exe файл, в результате он создается но не запускается. Он даже не отображается в списке запущенных процессов. У меня комп. Pentium IV...Вопрос № 95893: Предисловие :)
Прочел на башорге: как бы было здорово поменять местами буквы ц и я, тогда удобно было бы писать некуя.. вобщем прочел и решил поменять ) Но ассемблер незнаю, тока поверхностно и то под DOS. Ну вобщем решил написать просто обработч...
Вопрос № 95.870
Здравствуйте уважаемые эксперты! В пакете программ MASM6.11 который я скачал с сайта для изучения Ассемблера есть отладчик CodeView. Возникли затруднения с его запуском. При вызове отладчика появляется окно и внизу строки:
CV1053 Warning: TOOLS.INI not found
CV0101 Warning: no CdeVeiw infomation for 'C:MASM611BINR
Отправлен: 21.07.2007, 13:07
Вопрос задал: Tiratron (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Denisss Здравствуйте, Tiratron!
По первому предупреждению (warning) нашел следующую информацию на сайте Microsoft (ссылкана англ.).
Если коротко, то там сказано так:
"Т.к. CodeView не всегда требует наличия файла TOOLS.INI, Вы можете просто игнорировать данное предупреждение. Если у Вас есть файл TOOLS.INI, измените переменную среды INIT MS-DOS, чтобы указать путь к папке, в которой находится файл."
Из справочника по ошибкам CodeView:
CV1053 TOOLS.INI not found
Директория, указанная в переменной среды INIT, не содержит файла TOOLS.INI.
Проверьте переменную INIT и убедитесь, что она указывает на правильную директорию.
CV0101 no CodeView information for filename:
Приложение или динамическая библиотека (DLL) не содержит символов, требуемых для CodeView.
Откомпилируйте программу или DLL, используя параметр /Zi. Если производите "линковку" отдельными шагами, используйте параметр /CO. Используйте "линковщик" LINK самой последней версии.
Списал с книги "Ассемблер под Windows" код который создает простейшее окно, С помощью MASM пытался создать exe файл, в результате он создается но не запускается. Он даже не отображается в списке запущенных процессов. У меня комп. Pentium IV Celeron CPU 1,70GHz 512Мб оперативки. Для компиляции использую команды
ML /coff /c 333.asm
link /subsystem:windows 333.obj
Пожалуйста помогите, буду премного благодарен.
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Каликов Сергей Александрович!
Добавте в команду ML ключ Ср-сохранение регистров пользвательских идентификаторов т.к. имена функций из библиотек чувствительны к регистру.
и _ERR приведите к одному регистру.
Удачи!
Приложение:
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Отвечает: Олег Владимирович
Здравствуйте, Сергей Александрович!
Вы пропустили параметр CreateWindowExA - либо hWndParent, либо hMenu. В результате все следующие параметры сместились, и хэндл приложения попал на место хэндла меню, что вызвaло ошибку. Правильный участок кода в приложении.
На будущее. В Windows-программах принято включать чувствительность к регистру либо строкой option casemap: none, либо опцией ml /Cp. Поэтому использование метки _err не предполагает обращения к ней JMP _ERR. (CapsLock? :))
Good luck!
Приложение:
--------- Факультет ПМ-ПУ - лучший в СПбГУ!
Ответ отправил: Олег Владимирович (статус: Студент)
Ответ отправлен: 21.07.2007, 16:48
Вопрос № 95.893
Предисловие :)
Прочел на башорге: как бы было здорово поменять местами буквы ц и я, тогда удобно было бы писать некуя.. вобщем прочел и решил поменять ) Но ассемблер незнаю, тока поверхностно и то под DOS. Ну вобщем решил написать просто обработчик прерывания 10h. Сейчас уже понимаю, что не того прерывания написал обработчик ) Для теста меняю местами там буквы e и r. Короче, после запуска программы, когда я пишу букву e выводится на экран в строке ввода буква r, и наоборот. Но вводятся всеравно те, на которые нажал.
Вопрос следующий: чтой делает мой обработчик прерывания, вернее что это за прерывание такое и какое прерывание отвечает за вводимый симвоЛ? )
ЗЫ: на ассемблере первый раз писал что-то сам, так что извините если полную фигню сейчас написал. Вот текст моей "программы" )
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Mastobaev Vladimir Igorevich!
В самом обработчике добавить
-контроль регистра AH на те функции которые Вы перехватываете,
если функции не Ваши то выход JMP DWORD PTR CS:[Int_10h_vect]
-в блоке init нужно устанавливать обработчик на прерывание 16h,
также замените все 10h на 16h
Удачи!
--------- И только наступив на грабли мы приобретаем драгоценный опыт!