Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > MAXQ |
|
|||||||||||||||||||||
{L/S}CALL src - Длинный/короткий {Long/Short} вызов подпрограммыОписание: Выполняет вызов подпрограммы, расположенной по адресу, определяемому по содержимому источника scr. Команда CALL использует 8- битный src для осуществления относительного короткого вызова (IP +127/-128 слов). Команда CALL, использующая в качестве источника 16- битный src осуществляет абсолютный длинный вызов подпрограммы по 16- битному адресу. Для хранения старшего байта 16- битного непосредственного адреса команда использует регистр PFX[0]. Использование дополнительного префикса 'L' (т.е. LCALL) приведет к длинному вызову подпрограммы с использованием регистра PFX[0]. Использование дополнительного префикса 'S' (т.е. SCALL) вызовет формирование относительного короткого вызова, но будет отмечено ассемблером, если получатель за пределами диапазона. Определенный внутренний регистр src (не имеет значения - 8- битный или 16- битный) всегда осуществляет абсолютный вызов CALL по 16- битному адресу, таким образом, префиксы 'L' и 'S' не будут использоваться. Значение префиксного регистра PFX[n] используется для формирования старшего байта адреса в случае, когда в качестве scr выступает 8- битный регистр. Затрагиваемые флаги состояния: нет Выполнение команды: @++SP < IP + 1 PUSH (загрузка в стек) IP < src Absolute CALL (абсолютный вызов) IP < IP + src Relative CALL (относительный вызов) Код команды:
Пример(ы): CALL label1 ; относительный вызов по метке label1 (адрес должн быть в пределах ; IP +127/ -128) CALL label1 ; абсолютный вызов по метке label1 = 0120h ; MOVE PFX[0], #01h ; CALL #20h. CALL DP[0] ; DP[0] содержит 16- битный адрес подпрограммы CALL M0[0] ; принимается, что M0[0] - 8- битный регистр ; абсолютный вызов по адресу addr16 ; старший байт addr16=00h (PFX[0]) ; младший байт addr16=M0[0] MOVE PFX[0], #22h ; CALL M0[0] ; принимается, что M0[0] - 8- битный регистр ; Старший байт addr16=22h (PFX[0]) ; младший байт addr16=M0[0] LCALL label1 ; label=0120h и относительно команды ; абсолютный вызов инициализируется использованием префикса 'L' ; MOVE PFX[0], #01h ; CALL #20h SCALL label1 ; относительное смещение для метки label1 рассчитывается и используется ; если label1 не относительное, то ассемблер сформирует ошибку SCALL #10h ; относительное смещение #10h используется напрямую командой CALL Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|