Окончание программы на ассемблере



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

 

Завершить программу можно следующими способами:

  • через функцию 4CH (EXIT) прерывания 21H в любой момент, независимо от значений регистров;
  • через функцию 00H прерывания 21H или прерывание INT 20H, когда CS указывает на PSP.

Функция DOS 4CH позволяет возвращать родительскому процессу код выхода, который может быть проверен вызывающей программой или командой COMMAND.COM "IF ERRORLEVEL".

Можно также завершить программу и оставить ее постоянно резидентной (TSR), используя либо INT 27H, либо функцию 31H (KEEP) прерывания 21H. Последний способ имеет те преимущества, что резидентный код может быть длиннее 64K, и что в этом случае можно сформировать код выхода для родительского процесса.

 

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

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

Обработка этой неизвестной информации обычно приводит к эффектному краху системы, появлению «мусор» на экране или, в наихудшем варианте, к частичному разрушению данных на диске.

 


Дата добавления: 2015-12-17; просмотров: 123; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!