Косвенный дальний вызов процедуры


Call word ptr bx ; адрес процедуры в регистре bx

Mov bx, offset subr

End start

Subr endp

Ret

Subr proc near

Start endp

Int 21h

Mov ax, 4c00h ; выход

Call word ptr subadr ; из памяти взять слово

Mov ds,ax

Start proc

Code

Data

Косвенный ближний вызов

Seg2 ends

Sub endp

Ret

Seg1 ends

Start endp

Int 21h

seg2 segment 'code'

sub proc far

 

Подразумевает запись адреса точки входа (смещения) в ячейку памяти либо регистр и обращение при запуске процедуры к памяти или к регистру, где хранится адрес.

 

Пример

subadr dw subr; по адресу subadr записан адрес метки sub

 

… mov ax,@data

 

При косвенном запуске программы возможны другие варианты,

например:

 

dseg segment ‘data’