Не только дело привычки
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено AVR 15 апреля 2004 г. 13:13
В ответ на: to =mse= and all про вчерашнее изящество (+) отправлено Начинающий 15 апреля 2004 г. 12:02

Например, sub zh,zh сбросит бит переноса, а eor zh,zh и clr zh (на самом деле это одна и та же команда) его не тронет. Аналогично и add zl,zl и lsl zl - lsl сбрасывает флаг N, но не трогает H, а add может изменить и тот, и другой флаги в зависимости от величины операндов. В том примере это несущественно, но в других случаях может потребоваться либо тот, либо другой вариант.

А как макрос тот пример в лоб вставлять нельзя, не позаботившись предварительно о локальности или глобальности метки jmp_table - если таблица будет частью тела макроса (что нехорошо), то ошибки не возникнет, иначе эту метку надо передавать в макрос как параметр:


.macro jtab
mov zl,@0
add zl,zl
sub zh,zh
subi zl,low(-@1)
sbci zh,high(-@1)
ijmp
.endm
;
;Таблица переходов (не jmp, как в оригинале у MSE, а сразу адреса):
jmp_table: .dw foo1,foo2,foo3;и т.д.
;
;
;Вызов макроса:
jtab r3,jmp_table
;....
;
foo1:
;.....
;
foo2:
;.....
;
foo3:
;.....
;
;

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru