Программа Прекращения-Оставания-Резидента

Я практикую язык ассемблера в течение некоторого времени, и я как бы вникаю в него. Я начал делать TSR-программы, например, сканировать ввод с клавиатуры и тому подобное.
Меня до сих пор смущает то, как я могу запускать свою завершенную программу при нажатии определенной клавиши.
Самая основная вещь, которую я пытаюсь создать, - это отображать мое имя в начале экрана, когда, например, нажата клавиша «^». Обратите внимание, что я хочу, чтобы это произошло после выполнения моей программы

Командная строка

Как вы видите на картинке. Представьте, что я запустил программу "test.com". И в моей программе «test.com» я написал код TSR, который всякий раз, когда я нажимаю клавишу «^», мое имя пишется в начале экрана. Теперь, как вы можете видеть на картинке, моя программа завершена, и я могу запустить новую программу. Но когда я нажимаю клавишу "^", я все еще хочу написать свое имя в начале экрана, хотя программа больше не работает.

Извините за такой подробный пост, но я хочу быть уверен, что вы понимаете, что я такое спрашивать. Я знаю базовое/продвинутое программирование на ассемблере, я знаком с изменением прерываний с помощью пользовательской процедуры и всего остального. Я работал с программами TSR, которые делают что-то, когда они выполняются, а не после.

Я также был бы признателен, если бы вы не публиковали глупые ответы, такие как "зачем вы это делаете", и "вау, ты живешь прошлым, это бесполезно". У меня есть свои причины для этого, но это, очевидно, из практических соображений. И было бы хорошо, если бы мне могли ответить только люди, которые действительно знают ассемблер, а не люди, которые хотят получить больше ответов для значков...

Больше всего я бы хотел, чтобы кто-нибудь написал мне пример кода о том, что я прошу, или, по крайней мере, некоторые инструкции, например, какое прерывание я должен использовать для этого.

Заранее спасибо


person Bozic    schedule 29.10.2014    source источник
comment
Вот несколько советов о том, как перехватить прерывание клавиатуры: stackoverflow.com/questions /12882342/override-default-int-9h   -  person hcs    schedule 30.10.2014


Ответы (1)


Я понял это сейчас. Хитрость в том, что вам нужно только отредактировать прерывание BIOS, а затем ввести что-то вроде этого

mov ax,3100h ;   *This will terminate program and make it resident in RAM memmory*
mov dx,ammount_of_memmory ;   *This is the amount of memmory i want to reserve for my program*
int 21h ;   *This is the DOS system call to execute our program*

Таким образом, вы можете изменить то, что произойдет, если вы нажмете определенную клавишу на клавиатуре. Однако, если мы хотим отобразить сообщение, когда происходит определенное действие, нам нужно поместить его непосредственно в видеопамять, а не использовать стандартные функции печати.

person Bozic    schedule 01.11.2014