12.07.2015 Views

Kompendium - Datorteknik

Kompendium - Datorteknik

Kompendium - Datorteknik

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

F.1.5Indexerad adresseringsmod.Vi tar en närmare titt på denna viktiga adresseringsmod. Vi behöver först någrahjälpinstruktioner, som manipulerar XR.Mnemonic Beskrivning Funktion FlaggorLDX A Load XR XR = M(A), M(A + 1) Z,NSTX A Store XR M(A), M(A + 1) = XRINX Increment XR XR = XR + 1 C,V,Z,NDEX Decrement XR XR = XR − 1 C,V,Z,NFigur F.4: Instruktioner för hantering av indexregistret XR.Vi illustrerar indexering med ett programexempel. I minnet, med början påadress 20, finns en tabell med 8 st tal utan tecken. Bilda summan av dessa. Vi antarnu att talen är så små att inte carry kan uppstå!; min första indexeringSTART: CLRA ; summa=0LDX #7 ; loopräknare=7LOOP: ADDA (XR)20 ; addera ett talDEX; minska loopräknarenJMPP LOOP ; tal kvar?SLUT: JMP SLUTNågra kommentarer till ovanstående program:• Lägg märke till kommentarerna. De måste ge något som inte kan utläsas frånopkoderna. Det är strängt förbjudet att kommentera den första raden med nnollställackumulatorn”, det framgår ju av CLRA.• Bakåthoppet måste gå till rätt rad. Om vi hoppar tillbaka till LDX #7 fastnarvi i en oändlig loop.• Vi gör alltså additionen för XR = 7, 6, · · · , 0, det blir 8 gånger. När XR =−1, ska vi hoppa ur loopen, dvs fortsätta rakt nedåt. Här är det alltså viktigtatt välja rätt hoppvillkor, alltså hoppa om positivt N = 0. Vi inser nu att vibehöver 4 nya hoppinstruktioner, som testar på om resp. flagga är noll. AlltsåJMPNC, JMPNV, JMPNZ och JMPP.F.2 Subrutiner.Vi blev så nöjda med medelvärdesexemplet att vi skulle vilja använda det på flerställen i ett större program. Vi vill nu göra om programmet till en generell subrutin.Vi tänker oss att de tre talen ligger efter varandra på godtyckligt ställe i minnet.71

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!