Вопрос № 96224: 1) Здравствуйте, уважаемые эксперты!!!
Обращаюсь к вам, т.к. сам вряд ли смогу ответить на свой вопрос.
Я изучаю Asm по книге Олега Калашникова(Ассемблер?Это просто!).
Дошел до 3-й главы и у меня не работает программа, которая в конце гл...Вопрос № 96226: Ув. эксперты, подскажите, как программно узнать hint некоторой функции?...Вопрос № 96275: Привет! Я изучаю ассемблер по книге Калашникова. В главе 8 я встретился с программой по работе с файлами. Когда я запускаю эту программу через отладчик ADFPRO то дойдя к открытию файла в отладчике, строка int 21h (регистр IP = 0106) отладчик преходит...
Вопрос № 96.224
1) Здравствуйте, уважаемые эксперты!!!
Обращаюсь к вам, т.к. сам вряд ли смогу ответить на свой вопрос.
Я изучаю Asm по книге Олега Калашникова(Ассемблер?Это просто!).
Дошел до 3-й главы и у меня не работает программа, которая в конце главы. Я и сам набирал и запускал Com-программу автора, все равно ничего не происходит. Программа должна выводить в верхний левый угол веселую рожицу(белую) на синем фоне.
Оп.система у меня: Windows XP Pro 2002 SP 2, ОЗУ 256 мб
процессор Intel Celeron 1300.
что интересно, в программе Emu8086v.2,57(обуч.программа) если заменить символ рожицы на 37h(символ"7"),то все работает. Хотя рожица в любом случае не отображается, ни с помощью Masm'а, ни с помощью этой проги)
В чем дело?
Привожу код программы:
2)и еще один небольшой вопрос...
в первой главе этой книги выводится сообщение"Hello,World".Так вот, я попробовал заменить эти слова на "Здравствуй, мир" и отобразились совсем не те символы. С чем это связано и как это исправить?
Заранее спасибо.
Отвечает: Евгений Иванов
Здравствуйте, Коваленко Дмитрий Александрович!
Установите видеорежим:
mov ax,3
int 16
Успехов.
--------- Знания - сила
Ответ отправил: Евгений Иванов (статус: Профессор) Россия, Нижний Новгород Тел.: +79519145721 Организация: M2Media.ru Адрес: Нижний Новгород, ул.Малая Ямская WWW:Eugene Ivanov ICQ: 214889076 ---- Ответ отправлен: 24.07.2007, 17:09 Оценка за ответ: 5 Комментарий оценки: cпасибо за ответ!жаль только что второй вопрос остался без ответа.ну да ладно.продолжаю изучение!!! еще
раз спасибо:)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Коваленко Дмитрий Александрович!
2) Весь код набираете в блокноте, а выводимый русский текст пишете в любом текстовом редакторе поддерживающим кодировку 886(EDIT.COM из системной папки COМMAND). У блокнота кодировка ср1251.
Удачи!
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Практикант)
Ответ отправлен: 24.07.2007, 17:20 Оценка за ответ: 5 Комментарий оценки: Спасибо огромное!!!!!!!!
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Олег Владимирович!
Библиотеки DLL имеют PE заголовок, в котором есть секция .edata ( секция экспорта ).
В начале секции .edata расположена структура IMAGE_EXPORT_DIRECTORY, поля структуры и их описание смотрите в приложении. Получив значение AddressOfNames Вы получаете адрес списка имен всех экспортируемых функций, hint это порядковый номер функции в этом списке начиная с нуля. К примеру: hint(0009) Name: Beep, и в списке: AddAtomA, AddAtomW, AllocConsole, AllocLSCallback, AllocSLCallback, AreFileApisANSI, BackupRead, BackupSeek, BackupWrite, Beep
Более подробно структура РЕ.
Удачи!
Приложение:
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Привет! Я изучаю ассемблер по книге Калашникова. В главе 8 я встретился с программой по работе с файлами. Когда я запускаю эту программу через отладчик ADFPRO то дойдя к открытию файла в отладчике, строка int 21h (регистр IP = 0106) отладчик преходит на адрес IP = 107C и выдает не то что в программе. Почему так происходит? Почему отладчик не показует дальнейшую работу программы, хотя сама программа выводит сообщение что файл открыт и загружен в память, или не открыт!
Приложение:
Отправлен: 25.07.2007, 01:19
Вопрос задал: Artem88neo (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Стас
Здравствуйте, Artem88neo!
>строка int 21h (регистр IP = 0106) отладчик преходит на адрес IP = 107C и выдает не то что в программе.
Дебаггер уходит на int21 и показывает Вам "внутренности системы".
Чтобы это не происходило нужно вместо команды Trace (по моему F1 в AFD) использовать Proceed (F2 вроде). Тогда дебаггер как бы "пробежится" по INT (Call).
Ответ отправил: Стас (статус: Специалист)
Ответ отправлен: 25.07.2007, 11:25