Завершение программы
11.3. Завершение программы
"Старые" способы возврата из программы: функция DOS 0 и прерывание 0x20. Оба этих способа требуют, чтобы в регистре CS был сегментный адрес PSP. При этом восстанавливаются векторы прерываний 0x22, 0x23, 0x24, но не выполняется автоматическое закрытие открытых программой файлов. Завершение программы командой RET сводится к выполнению команды INT 20h, так как DOS при вызове программы записывает в стек нулевое слово, по RET это слово выбирается в IP, и управление передается по адресу PSP:0000.
В современных версиях DOS следует использовать для возврата функцию 0x4C. Эта функция возвращает управление родительской программе с закрытием всех файлов, восстановлением векторов и возможностью установить код завершения (задается в регистре AL). После окончания программы код ее завершения может быть проанализирован в командном файле (BAT-файле) по значению ERRORLEVEL или может быть получен программой, запустившей завершившуюся по функции 0x4D (возвращает код завершения в AL, в AH - способ завершения: 0 - нормальное, 1 - по Ctrl+Break, 2 - по критической ошибке, 3 - программа завершилась, но осталась резидентной).