Читайте также:
|
|
Наиболее часто используется передача кодов подпрограмме через стек. Перед вызовом подпрограммы в стек заносят требуемые параметры-коды, которые затем извлекаются в процедуре с помощью косвенной адресации через регистр BP. Используется косвенная адресация со смещением кратным 2. При возврате из процедуры указывается количество байтов помещённых в стек при вызове.
Извлечение кодов при ближнем вызове
На рисунке 4.1 показан ближний вызов подпрограммы MyProc, перед вызовом подпрограмме через стек передается код 0F. Состояние стека после вызова подпрограммы показано на рисунке 4.2.
Рис.4.1. Передача кода в подпрограмму. Ближний вызов.
Пример. Программа с подпрограммой вывода символа на консоль, код символа передается через стек.
use16
org 256
;----------------------------
mov AL,[sym]
mov AH,0
push AX
call getSym;вызов подпрограммы
;----------------------------
mov AH,08
int 21h
mov AX,4C00h
int 21h
;-----------------------------
sym db 176;символ
;-----------------------------
getSym:
mov BP,SP;BP->Верх стека
mov AH,02
mov DX,[BP+2];Читать код символа
int 21h
ret 2
Рис.4.2. Код в стеке
Дата добавления: 2015-07-26; просмотров: 58 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Дальний вызов подпрограммы | | | Задания для самостоятельной работы |