Tabeller
Tabeller blir ofte brukt når man skal oversette en tallverdi til en annen og når man skal hoppe til forskjellige
steder i programmet avhengig av en tallverdi i et register, disse kalles oppslagstabell og hopptabell.
Prinsippet med tabeller er at man øker programtelleren med en tallverdi, prosessoren vil hoppe det antall linjer
ned i programmet som tallverdien er.
Det er viktig å legge tabellen i begynnelsen av programmet ( etter initialiseringen ), fordi programtelleren er
delt opp i 2 deler, hvis tabellen ligger i overgangen mellom disse, så vil det skje uforklarlige ting som er vanskelig
å finne årsaken til.
Når programmet startes så går man forbi tabellen med en goto kommando.
Det er også viktig at tallet i w registeret ikke overstiger antall linjer i tabellen.
Oppslagstabell
Dette eksemplet gjør om verdien i w registeret til ascii verdi, ascii verdien returneres i w registeret.
Denne tabellen kalles opp med CALL kommandoen ( call tabell )
tabell |
addwf |
2,1 |
;adderer verdien i w med programtelleren og legger resultatet i programtelleren |
retlw |
.48 |
;ascii verdien for 0 |
|
retlw |
.49 |
;ascii verdien for 1 |
|
retlw |
.50 |
;ascii verdien for 2 |
|
retlw |
.51 |
;ascii verdien for 3 |
|
retlw |
.52 |
;ascii verdien for 4 |
|
retlw |
.53 |
;ascii verdien for 5 |
|
retlw |
.54 |
;ascii verdien for 6 |
|
retlw |
.55 |
;ascii verdien for 7 |
|
retlw |
.56 |
;ascii verdien for 8 |
|
retlw |
.57 |
;ascii verdien for 9 |
|
retlw |
.65 |
;ascii verdien for A |
|
retlw |
.66 |
;ascii verdien for B |
|
retlw |
.67 |
;ascii verdien for C |
|
retlw |
.68 |
;ascii verdien for D |
|
retlw |
.69 |
;ascii verdien for E |
|
retlw |
.70 |
;ascii verdien for F |
Hopptabell
Hopptabell brukes hvis man vil hoppe til forskjellige steder i programmet avhengig av hva tallet i w registeret er.
tabell |
addwf |
2,1 |
;adderer verdien i w med programtelleren og legger resultatet i programtelleren |
goto |
adder |
;går til adder hvis w er 0 |
|
goto |
subtraher |
;går til subtraher hvis w er 1 |
|
goto |
divider |
;går til divider hvis w er 2 |
|
goto |
multipliser |
;går til multipilser hvis w er 3 |