2014-10-29 2 views
0

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

Command lineПрограмма сборки с остановкой-резидентом-резидентом

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

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

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

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

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

+0

Вот несколько советов о том, как подключить прерывание клавиатуры: http://stackoverflow.com/questions/12882342/override-default-int-9h – hcs

ответ

0

Я понял это сейчас. Фокус в том, у вас есть только редактировать прервать 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* 

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

Смежные вопросы