[an error occurred while processing this directive]
|
0. Следуй рекомендациям по цитированию кода в конфу, чтобы код не урезАлся и оставался читабельным (см. заголовок сообщения по ссылке)
1. В самом начале у тебя описка - не LDC, а LDI.
2. При indx = 0 переход будет к subrout1, при =1 - к subrout2, при =2 - к subrout3. Обязательно нужно позаботиться об ограничении допустимых значений indx (проще всего - модульной маской) и заполнением "неиспользуемых" меток адресом подпрограммы обработки ошибки индекса
3. Ничего умножать/делить не нужно, в Z пишется адрес СЛОВА. Это глюк симулятора (а в некоторых версиях еще были похожие глюки ассемблера) АСтудио, какая у тебя версия?
4. Вот работающий код, можешь поизучать:
.def indx = r17
beg0:
ldi indx,0
beg:
ldi r30,low(FG)
ldi r31,high(FG)
clr r16
andi indx,7 ;Limit INDX to 8 entries max
add r30,indx
adc r31,r16
ijmp
FG:
rjmp subrout1
rjmp subrout2
rjmp subrout3
rjmp beg0 ;INDX error handler
rjmp beg0
rjmp beg0
rjmp beg0
rjmp beg0
.org $200
subrout1:
inc indx
rjmp beg
.org $300
subrout2:
rjmp subrout1
.org $400
subrout3:
rjmp subrout1
E-mail: info@telesys.ru