Понадобилось написать на ассемблере вычисляемый GOTO, аналог switch k на си, с максимально возможным быстодействием. Пока дошёл до такого кода
Код
movlw HIGH v8goto
movwf PCLATH
movf k,w
addwf k,w
addwf PCL,1
v8goto
bra v8mf0 ;k=00
bra v8mf1 ;k=01
bra v8mf0 ;k=02-MF2(cylinder 1 & 5)
bra v8mf0 ;k=03
bra v8mf0 ;k=04
и т.д.
Проблема состоит в размещении кода в любом месте программы. После компиляции смотрю, где лежит таблица переходов, если не пересекает 256-байтную границу, то всё в порядке. Интересно бы посмотреть, как кто делает.