Assembler IAR символьные имена регистров
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено amatorAVR 27 июня 2005 г. 02:38

Господа, проясните ситуацию. До сих пор писал только на ассемблере от Atmel, а тут начал осваивать Си от IAR, и использую пп. Преобразования в BCD на ассемблере. Но при ассемблировании компилятор выдаёт кучу ошибок «Error[43]: Illegal effective address». Ассемблировать-то я смог, заменив символьные имена абсолютными (R16,R17...), но вопрос остался. Как работать с символьными именами регистров??? Подпрограмму привожу ниже

NAME bin16BCD5
#include


#define fbinL r16
#define fbinH r17
#define tBCD0 r17
#define tBCD1 r18
#define tBCD2 r19
PUBLIC bin16BCD5
RSEG CODE

bin16BCD5:
ldi tBCD2, -1
bin16BCD5_loop_1:
inc tBCD2
subi fbinL, low(10000)
sbci fbinH, high(10000)
brsh bin16BCD5_loop_1
subi fbinL, low(-10000)
sbci fbinH, high(-10000)
ldi tBCD1, -0x11
bin16BCD5_loop_2:
subi tBCD1, -0x10
subi fbinL, low(1000)
sbci fbinH, high(1000)
brsh bin16BCD5_loop_2
subi fbinL, low(-1000)
sbci fbinH, high(-1000)
bin16BCD5_loop_3:
inc tBCD1
subi fbinL, low(100)
sbci fbinH, high(100)
brsh bin16BCD5_loop_3
subi fbinL, -100
ldi tBCD0, -0x10
bin16BCD5_loop_4:
subi tBCD0, -0x10
subi fbinL, 10
brsh bin16BCD5_loop_4
subi fbinL, -10
add tBCD0, fbinL

mov fbinL,tBCD0
mov tBCD0, tBCD1
ret

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

Ответы



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

E-mail: info@telesys.ru