[an error occurred while processing this directive] [an error occurred while processing this directive]
Уважаемый Колян! На #%я козе баян??:))
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено BLACKEAGLE 12 апреля 2002 г. 16:20
В ответ на: Достал "C-дружелюбный" асм 51 :-)) Как народ организует сохранение регистрового контекста при вызове ф-ций ? отправлено DmitryRyvkin 11 апреля 2002 г. 10:56

Не вижу никакого смысла в mov RXsave,rx/mov rx,RXsave.

Во-первых, при вложенных подпрограммах saveR'ов не напасешься. А "неизвестен банк", несмотря на USING 0 - это просто кривая реакция ассемблера на недопустимую мнемонику - дело в том, что в х51 нет команд push/pop reg, есть лишь push/pop direct, поэтому даже push a должно отражаться, т.к. нет direct с именем "a", должно быть написано push acc.

Поэтому, если точно известен текущий банк, нужно просто явно указывать direct-адрес регистра - push 0, push 5, pop 30 и т.п. Кстати, только mov direct,a/mov a,direct выполняются за один цикл, а и push direct/pop direct, и mov direct,r/mov r,direct - за два цикла, поэтому экономии времени тоже не получится.

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

Ответы



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

E-mail: info@telesys.ru