|
Господа, проясните ситуацию. До сих пор писал только на ассемблере от Atmel, а тут начал осваивать Си от IAR, и использую пп. Преобразования в BCD на ассемблере. Но при ассемблировании компилятор выдаёт кучу ошибок «Error[43]: Illegal effective address». Ассемблировать-то я смог, заменив символьные имена абсолютными (R16,R17...), но вопрос остался. Как работать с символьными именами регистров??? Подпрограмму привожу ниже
NAME bin16BCD5 bin16BCD5: mov fbinL,tBCD0
E-mail:
info@telesys.ru
#include
#define fbinL r16
#define fbinH r17
#define tBCD0 r17
#define tBCD1 r18
#define tBCD2 r19
PUBLIC bin16BCD5
RSEG CODE
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 tBCD0, tBCD1
ret
Ответы