Вопрос № 36948: Пишу программу (резидент) под дос, когда запускаю в нортоне все отлично работает, если в winXP, запускается консоль и сразу же закрывается. Программа в памяти не остается.
Не ужели нужно использовать winAPI?
Расширение программы - com. ...Вопрос № 36974: Здравствуйте уважаемые эксперты.
Мне надо запретить аппаратное прерывание от клавиатуры, показав это в буфере клавиатуры.
Я это делаю так:
Запускается прога и выводится буфер клавиатуры (сначала он пустой)
далее идёт задержка во время...Вопрос № 36996: Начал читать книгу Калашникова Ассемблер это просто. Примеры связанные с видеобуфером не работают. Это программы из глав 3,4,5. Программа запускается, но никакие рожицы не выводятся. Как решить данную проблему...
Вопрос № 36.948
Пишу программу (резидент) под дос, когда запускаю в нортоне все отлично работает, если в winXP, запускается консоль и сразу же закрывается. Программа в памяти не остается.
Не ужели нужно использовать winAPI?
Расширение программы - com.
Отправлен: 07.03.2006, 12:43
Вопрос задал: Gwest (статус: 2-ой класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Евгений Иванов
Здравствуйте, Gwest!
запускай в окне эмулятора.
но всё зависит, от того, что тебе нужно сделать.
Если работу через клавиши, то нужно писать для win32.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 07.03.2006, 12:58 Оценка за ответ: 3 Комментарий оценки: Добавлю к вопросу: Написал программу которая запускается и проверяет
есть ли в памяти другая(резидент), если есть то работаем дальше, если же нет
, просто закрываемся. Все написано и отлично работает, но только в NortonCom. и VolkovCom., в винде работает
только первая программа, резиден не хочет оставаться в памяти. МОЙ ВОПРОС: КАК Е
;ГО ЗАСТАВИТЬ ТАМ ОСТАТЬСЯ, чтобы первая программа могла работать.
Отвечает: FreeManC
Здравствуйте, Gwest!
Прерывание завершает прогу, оставляя резидентную часть в памяти - это если программить под дос. Иначе же завершение проги в винде ничего не оставляет резидентным. Под виндой чтоб оставить резидентную часть в памяти запускай прогу из cmd.exe должно помочь. А вообще не парься и если пишешь в винде - пиши под винду. Расширение проги правда будет .ехе, но разве это когото останавливает?
Ответ отправил: FreeManC (статус: 2-ой класс)
Отправлен: 07.03.2006, 14:37
Отвечает: Беляев Валерий (ака seaman)
Здравствуйте, Gwest!
Ну вообще-то главное отличие XP это отсутствие DOS. В ней есть эмулятор ДОС.
Я думаю в этом все проблемы. Что позволит ВИНДА, то и работает.
Тут выходов несколько - или работать в обычной ДОС, или писать под XP, или работать в виртуальной машине, запущенной под XP, с установленной на ней ДОС.
Здравствуйте уважаемые эксперты.
Мне надо запретить аппаратное прерывание от клавиатуры, показав это в буфере клавиатуры.
Я это делаю так:
Запускается прога и выводится буфер клавиатуры (сначала он пустой)
далее идёт задержка во время которой произвольно нажимаются клавиши
После задержки вновь выводится буфер в котором должны быть коды нажатых клавиш
Потом идёт отключение прерываний клавы
(in al, 21h
or al, 00000010b
out 21h, al)
теперь ещё одна задержка при которой снова нажимаются клавиши и опять вывод буфера клавиатуры который на этот раз измениться не должен.
Возникает проблемма с выводом содержимого буфера.
При обращении к нему по адресу 0:41Ah выводится какая-то ерунда и при нажатии клавиш ничего не меняется. Не важно какие клавиши нажимаются выводится всё время одно и тоже.
Пробовал в среде Дос win98 и Win XP и содержимое буфера всё время разное.
Может у этого буфера сменился адрес или я что-то не так делаю?
Код проги в приложении.
Заранее спасибо.
Приложение:
Отправлен: 07.03.2006, 20:05
Вопрос задал: Rus (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Нужно обращаться через сегментный регистр, например так:
xor ax, ax
mov es, ax
fd: mov al, es:[041Eh+bx]
--------- Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Академик)
Отправлен: 09.03.2006, 13:53 Оценка за ответ: 5
Вопрос № 36.996
Начал читать книгу Калашникова Ассемблер это просто. Примеры связанные с видеобуфером не работают. Это программы из глав 3,4,5. Программа запускается, но никакие рожицы не выводятся. Как решить данную проблему
finit
fldpi
mov cx, 0B800h
frndint
mov es, cx
fistp [video]
sub di, di
mov ax, [video]
int 16
mov ah, 31
mov al, 1
mov es:[di], ax
mov ah, 10h
int 16h
int 20h
video dw ?
smile Ends
End start
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 07.03.2006, 23:51
Отвечает: Пан Павел Константинович
Здравствуйте, Мещеряков Илья Николаевич!
Если у вас Win XP попробуйте в "Командной строке", ну в Сеансе Ms-Dos набрать вот так:
c:debug.exe
т.е. запустить программу debug.exe и когда запустите у вас появится такое:
-
а вы сделайте вот так:
-q
тем самым вы выйдите из программы. Теперь не закрывая сеанс наберите:
с:ваша-программа.com
тем самым у вас должно быть всё нормально.
Соль такова:
Сеанс использует не тот видеобуфер. Ваша задача заставить сменить видеобуфер Сеанса т.е. сделать активным видеобуфер-0B800h.