ВУЗ:
Составители:
Рубрика:
5
ASSUME назначения сегментных регистров сегментам данных, стека, кода
можно разместить перед сегментом кода или в первой его строке.
Начало и конец программного модуля обозначается с помощью связан-
ных директив NAME и END. После директивы NAME следует имя модуля, а
после директивы END помещается метка входа в программу (стартовая команда
или имя процедуры).
Корректное
завершение выполнения программы можно организовать с
помощью системного прерывания INT 21H, передающего управление програм-
ме– диспетчеру DOS:
...............
MOV AX,4C00H ; задание функции выхода из программы.
INT 21H
После этого следует закрыть сегмент кода директивой:
имя сегмента кода ENDS ,
а затем завершить программный модуль:
END метка стартовой команды .
Во многих случаях удобно оформить программу в сегменте кода в виде
основной процедуры типа FAR , содержащей главные операции в соответствии с
алгоритмом, и набора процедур-подпрограмм. Основная процедура в последних
строках содержит:
RET
имя процедуры ENDP
Команда RET обеспечит корректный выход из программы после ее выполнения
с помощью системного прерывания INT 20H. Для исполняемого файла *.ЕХЕ
младший байт адреса этого прерывания находится в ячейке памяти с нулевым
смещением в области префикса программного сегмента (PSP). Для того, чтобы
по команде RET процессор обратился по этому адресу, адрес должен находиться
в стеке. Адрес формируется в виде SEG:OFFSET(сегмент:смещение). Значение
SEG PSP при запуске программы содержится в сегментном регистре DS, а
OFFSET=0 следует сформировать.
Таким образом, для корректного завершения программы в начале сег-
мента кода
нужно поместить следующие операторы:
PUSH DS ; сохранение в стеке SEG PSP.
XOR AX,AX ;формирование нулевого значения в AX.
PUSH AX ;сохранение в стеке нулевого значения OFFSET
По команде RET процедуры типа FAR из стека будет извлечено два сло-
ва, при этом значение SEG загружается в CS , а значение OFFSET=0 заносит-
ся в IP, чем обеспечивается обращение процессора к адресу системного преры-
вания, передающего
управление для завершения программы.
При запуске программы на исполнение логический адрес стартовой ко-
манды CS:IP , а также логический адрес стека SS:SP загружаются операционной
5
ASSUME назначения сегментных регистров сегментам данных, стека, кода
можно разместить перед сегментом кода или в первой его строке.
Начало и конец программного модуля обозначается с помощью связан-
ных директив NAME и END. После директивы NAME следует имя модуля, а
после директивы END помещается метка входа в программу (стартовая команда
или имя процедуры).
Корректное завершение выполнения программы можно организовать с
помощью системного прерывания INT 21H, передающего управление програм-
ме– диспетчеру DOS:
...............
MOV AX,4C00H ; задание функции выхода из программы.
INT 21H
После этого следует закрыть сегмент кода директивой:
имя сегмента кода ENDS ,
а затем завершить программный модуль:
END метка стартовой команды .
Во многих случаях удобно оформить программу в сегменте кода в виде
основной процедуры типа FAR , содержащей главные операции в соответствии с
алгоритмом, и набора процедур-подпрограмм. Основная процедура в последних
строках содержит:
RET
имя процедуры ENDP
Команда RET обеспечит корректный выход из программы после ее выполнения
с помощью системного прерывания INT 20H. Для исполняемого файла *.ЕХЕ
младший байт адреса этого прерывания находится в ячейке памяти с нулевым
смещением в области префикса программного сегмента (PSP). Для того, чтобы
по команде RET процессор обратился по этому адресу, адрес должен находиться
в стеке. Адрес формируется в виде SEG:OFFSET(сегмент:смещение). Значение
SEG PSP при запуске программы содержится в сегментном регистре DS, а
OFFSET=0 следует сформировать.
Таким образом, для корректного завершения программы в начале сег-
мента кода нужно поместить следующие операторы:
PUSH DS ; сохранение в стеке SEG PSP.
XOR AX,AX ;формирование нулевого значения в AX.
PUSH AX ;сохранение в стеке нулевого значения OFFSET
По команде RET процедуры типа FAR из стека будет извлечено два сло-
ва, при этом значение SEG загружается в CS , а значение OFFSET=0 заносит-
ся в IP, чем обеспечивается обращение процессора к адресу системного преры-
вания, передающего управление для завершения программы.
При запуске программы на исполнение логический адрес стартовой ко-
манды CS:IP , а также логический адрес стека SS:SP загружаются операционной
Страницы
- « первая
- ‹ предыдущая
- …
- 3
- 4
- 5
- 6
- 7
- …
- следующая ›
- последняя »
