Предыдущий раздел ВЫВОД СИМВОЛОВ НА ЭКРАН Следующий раздел

4.2. Команда завершения программы

Машинная команда “int 20h” сообщает DOS о том, что мы хотим выйти из нашей программы, и чтобы управление опять вернулось в DOS. В нашем случае эта команда вернет управление в Debug, так как мы запускаем нашу программу не непосредственно из DOS,  а из Debug.

В в е д и т е  команду 20CDh, начиная с адреса l00h, а затем проделайте следующее (не забудьте проверить команду "int 20h" с помощью команды R Debug):     

_G 102

Program  terminated  normally

_R

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=3970  ES=3970  SS=3970 CS=3970 IP=0100 NV UP DI PL NZ NA PO NC            

3970:0100  CD20   INT 20

_G

Program terminated normally

_R

Результат команды G аналогичен результату команды “G 102”. Любая из этих команд Debug выполняет всю программу (сейчас она состоит всего из одной команды – “int 20h”) и затем возвращается к началу. Когда мы начали выполнение, IP был установлен в l00h, т.к. мы заново запустили Debug. После выполнения  G   IP опять содержит l00h.

Мы можем поместить машинную команду “int 20h” в конец любой программы для того, чтобы красиво передать управление DOS (или Debug). Для начала поместим ее после команды “int 21h” и получим программу из двух команд, выполняющую вывод символа на экран. Для этого начиная с адреса l00h  в в е д и т е  одну за другой две машинные команды – 21CDh и 20CDh.

Когда у нас была только одна машинная команда, то мы могли "пролистать" ее командой R Debug, но теперь у нас две команды. Чтобы увидеть их, воспользуемся командой Debug U(от "Unassemble" – разассемблирование):

_U   100

3970:0100   CD21   INТ 21

3970:0102   CD20   INT 20

Далее идут еще 12 строк листинга, содержащие команды, оставшиеся в памяти от предыдущих программ.

П о м е с т и т е  в регистр АH значение 02h, а в регистр DL код любого символа, например код символа F – 46h. Затем введите команду G, чтобы увидеть символ на экране:

_G

F

Program terminated normally

До этого мы вводили команды программы в виде чисел, например 21CDh. Но это слишком тяжелая работа и избавиться от нее помогает команда Debug А (от "Аssemble" – ассемблирование). Эта команда помогает вводить мнемонические (человекочитаемые) машинные команды. Применим команду А для ввода нашей программы:

_А   100

3970:0100     INT  21

3970:0102     INT  20

3970:0104

Команда A сообщает Debug о том, что мы хотим ввести машинные команды в мнемонической форме, а число 100 в команде означает, что ввод машинных команд начинается с ячейки l00h.

 


Предыдущий раздел В начало Следующий раздел