Команда ACALL <addr 11>
Команда "абсолютный вызов подпрограммы" вызывает безусловно подпрограмму, размещенную по указанному адресу. При этом счетчик команд увеличивается на 2 для получения адреса следующей команды, после чего полученное 16-битовое значение РС помещается в стек (сначала следует младший байт), и содержимое указателя стека также увеличивается на два. Адрес перехода получается с помощью конкатенации старших бит увеличенного содержимого счетчика команд, битов старшего байта команды и младшего байта команды.
Ассемблер: |
ACALL <метка> |
Код: |
|
|
Время; |
2 цикла |
Алгоритм: |
(PC) : = (PC) + 2
(SP) : = (SP) + 1
((SP)) : = (PC [ 7 - 0 ])
(SP) : = (SP) + 1
((SP)) : = (PC [15 - 8])
(PC [10 - 0]) : = A10A9A8 II A7A6A5A4A3A2A1A0,
где II - знак конкатенации (сцепление) |
Пример: |
;ДО ВЫПОЛНЕНИЯ КОМАНДЫ ACALL
;(SP)=07H
;метка МТ1 соответствует адресу: 0345Н,
;т.е. (РС)=0345Н
ACALL MT1 ;расположена по адресу 028DH, т.е.
;(ЗС)=028DH
;ПОСЛЕ ВЫПОЛНЕНИЯ КОМАНДЫ
;(SP)=09H, (PC)=0345H,
;ОЗУ [08]=8FH, ОЗУ [09]=02H.
|
|