CALL

CALL: Вызов процедуры. Выполняет короткий или длинный вызов  процедуры  для связи подпрограмм.  Для возврата из процедуры  используется  команда  RET. Команда CALL уменьшает содержимое SP на 2 и заносит в стек адрес следующей команды (из IP), а затем устанавливает в регистре IP  относительный  адрес процедуры. Впоследствии команда  RET  использует  значение  в  стеке  для возврата. Существует четыре типа команды CALL для вызова внутри сегмента и между сегментами.  Команда межсегментного  вызова  сначала  уменьшает SP, заносит  в  стек  адрес  из  регистра  CS,  а  затем  загружает  в    стек внутрисегментный указатель.

​​

Пример ассемблер кода с использованием данной команды:view sourceprint?

01org 100h
02call func
03mov ax,4c00h
04int 21h
05msg db "Hello CALL!$"
06func:
07mov ah,9
08mov dx,msg
09int 21h
10ret

Программа вызывает функцию которая выводит строку на экран, затем возвращается на следующую  команду после CALL, то есть  в нашем  случае выполниться mov ax,4c00h.

Добавить комментарий

Ваш адрес email не будет опубликован.