ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »