Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Дальний вызов подпрограммы

Читайте также:
  1. II. Вызов кредиторов наследодателя
  2. Анализ рисков реализации подпрограммы и описание мер управления рисками.
  3. Бездуховность бросает вызов Русскому самосознанию.
  4. Ближний вызов подпрограммы
  5. Бросивший вызов силам деградации и смерти
  6. Відповідальний за випуск – Анікіна Н.П.
  7. Вызов меняющимся временам

Если подпрограмма и команда вызова находятся в разных сегментах, то такой вызов называется дальним - far. При этом для возврата из подпрограммы используется команда retf. Команда дальнего вызова записывается в виде:

call имя_сегмента:имя_подпрограммы

Рис.3.1. Дальний вызов подпрограммы

Для возврата в исходную точку программы в стек процессором заносится адрес текущего сегмента – содержимое регистра CS и смещение к следующей команде – содержимое регистра IP. Два слова(4 байта). Затем в регистр CS загружается адрес сегмента, где находится подпрограмма, в регистр IP адрес первой команды подпрограммы.

Рис.3.2. Состояние стека, far - вызов

Пример. Программа вывода символа с дальним вызовом.

format MZ

entry csg1:main

stack 512

;======================

segment csg1;Первый сегмент кода

;-------------------

main:

mov AX,dsg

mov DS,AX;DS -> dsg

;-------------------

call csg2:getSym;Вызов подпрограммы

;-------------------

mov AH,08

int 21h

mov AX,4C00h

int 21h

;======================

segment dsg;Сегмент данных

sym db 176;Символ

;======================

segment csg2;Второй сегмент кода

getSym:

mov AH,02

mov DL,[sym]

int 21h

retf


Дата добавления: 2015-07-26; просмотров: 79 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Ближний вызов подпрограммы| Передача исходных данных в подпрограмму

mybiblioteka.su - 2015-2024 год. (0.006 сек.)