![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 13.04.2015
Сообщений: 32
|
![]()
Привет! Рассматриваю пример резидентной программы для DOS из книги "Ассемблер на примерах. Базовый курс" Рудольф Марек.
Вот код программы: Код:
C:\MASM\BIN>ML.EXE /c C:\Prog\Prog.asm папки C:\MASM\BIN в папку C:\Prog C:\MASM\BIN>link16 C:\Prog\Prog.obj, C:\Prog\Prog.exe, C:\Prog\Prog.map C:\MASM\BIN>exe2bin C:\Prog\PROG.EXE C:\Prog\Prog.com Затем запускаю командную строку. В ней запускаю получившуюся программу. При нажатии на клавишу Scroll Lock цвет символов в консоли не меняется, некоторые клавиши(например стрелки вверх и вниз) перестают работать в открытой командной строке. Подскажите в чём может быть дело. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 474
|
![]()
Скомпилировал и запустил в DOSBox, единственно, заменил код ScrollLock на CapsLock - на моей клавиатуре нет такой клавиши.
Заметил, что в подпрограмме Color сильно не по делу установка текстового видеорежима - я бы удалил эти две строки. Запускайте в DOSBox - будет работать. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 13.04.2015
Сообщений: 32
|
![]()
Спасибо за совет! Получается командная строка не поддерживает всего функционала DOS? В командной строке плохо работает резидентная часть программы?
Последний раз редактировалось Тимох; 05.01.2022 в 22:03. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 474
|
![]()
Не буду врать - не знаю.
Резидент из книги Касаткина, запускаемый из командной строки WinXP, сильно затормаживал машину с i486, а на той же машине из под "чистого" DOS работал хорошо. Возможно, была не полная совместимость. Вы - запустите в DOSBox и проверьте. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 30.03.2015
Сообщений: 17
|
![]()
Попробовал, в досбокс, эффекта ноль, хоть не висит, уже хорошо )
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 474
|
![]()
Странно - тему начинал один пользователь, а продолжил другой...
Ну, да ладно - работа с клонами на усмотрение администрации. Собственно, помимо запуска в DOSBox ещё советовал |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 474
|
![]()
Нашёл книгу, набрал из неё программу - работает.
Её код частично отличается от вашего, в частности отсутствует установка текстового режима в теле резидента. Для nasm Код:
Код:
dosbox_001.png |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 13.04.2015
Сообщений: 32
|
![]()
FPaul С клонами Вы не общались, я временно отсутствовал на форуме.
Текстовый видеорежим в код добавил я. Встречал программу выводящую символ в видеобуфер, она не работала пока не добавил текстовый режим отображения. Думал и в данной программе это поможет. В этой программе удалил текстовый видеорежим и заменил скан код клавиши ScrollLock - 46h на скан код клавиши F7 - 41h(можно было и другую клавишу). При запуске в командной строке Windows зависания уже не было(вроде все клавиши работали), а изменения цвета не происходило (хотя при повторном запуске компилятора или линковщика(не помню точно) в этой же консоли некоторые их строки стали красными). В DOSBox все работала правильно - цвет шрифта изменился. Совет использовать DOSBox помог. Я думал что командная строка Windows полностью эмулирует DOS, а про DOSBox был не в курсе. Вероятно что командная строка Windows не очень корректно поддерживает DOS резиденты в памяти. Вот получившийся код: Код:
Последний раз редактировалось Тимох; 19.01.2022 в 19:12. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ассемблер. Резидентная программа | StudArt | Фриланс | 2 | 01.06.2017 09:24 |
резидентная программа | SchwarzeWolfin | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 23.05.2012 09:54 |
Резидентная программа | Andr2011 | Visual C++ | 3 | 08.11.2011 16:49 |
Резидентная программа | lilufonel | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 25.05.2010 01:27 |
Резидентная программа! | Nemesisking | Общие вопросы C/C++ | 8 | 29.09.2007 08:46 |