Vsak ukaz računalnika mora vsebovati poleg informacije o operaciji tudi informacije o operandu, oziroma operandih. Operandi so običajno, čeprav ne vedno, podani z naslovi, na katerih se nahajajo. Za načine, s katerimi je v ukazu podana informacija o operandih, se je zato uveljavil izraz naslavljanje (addressing). Ukazi MC68XX imajo različne dolžine in zasedajo v pomnilniku najmanj eno in največ tri lokacije.
Tako poznamo eno, dvo ali trozložne ukaze. Vsi ukazi MC68XX vsebujejo informacijo o operaciji vedno v prvi besedi ukaza, v operacijski kodi. Informacija o operandih je lahko podana na več načinov, kar imenujemo različni načini naslavljanja. Izraz naslavljanje uporabljamo zato, ker je operand običajno določen z naslovom pomnilniške lokacije, kjer se nahaja. Operandi so pri MC68XX lahko v pomnilniku (zaradi pomnilniško preslikanega vhoda-izhoda to vključuje tudi registre vhodno-izhodni naprav) in v registrih CPE. Informacija o načinu naslavljanja je vsebovano v operacijski kodi ukaza, pri 8 bitni operacijski kodi pa je možnih največ 256 različnih ukazov.
Čeprav gre v vseh primerih za isto operacijo, so ukazi glede na odločitve operanda različni in imajo vsak svojo operacijsko kodo, nekateri pa tudi različne dolžine. MC6803 pozna 82 različnih operacij, ker pa vsaki operaciji pripada več ukazov, glede na način naslavljanja, je vseh ukazov 220. Možnih je sicer 256 ukazov, vendar jih je do tega 34 nedoločenih, dva pa uporablja proizvajalec v testne namene. Število različnih načinov naslavljanja je pri današnjih računalnikih pogosto veliko, tudi 10 ali več. Zanje uporabljajo proizvajalci različna imena, ki so pogosto različna za v bistvu enake načine.
Pri tem načinu naslavljanja so operandi v notranjih registrih CPE ali pa na skladu. Ukaz vedno zavzema eno samo pomnilniško besedo. Ukazi te vrste ne poznajo drugega načina naslavljanja.
naslavljanje
V zbirnem jeziku pri teh ukazih napišemo samo mnemonik ukaza, npr. INCA, ker je operand določen že s samo operacijo in ga ni potrebno posebej navajati.
ukaz | strojna koda | šestnajstiško | opis |
---|---|---|---|
ABA | 00011011 | 1B | Sešteje vrednost registra A in registra B in shrani rezultat v register A. |
ABX | 00111010 | 3A | Sešteje vrednost registra X in registra B, ki mu doda zgornjih osem bitov z vrednostjo 0 in shrani rezultat v register X. |
ASLA | 01001000 | 48 | Bite od 0 do 6 registra A premakne za eno mesto v levo, na mesto bita 0 vpiše vrednost 0, bit 7 se prenese v zastavico C pogojno kodnega registra CCR. |
ASLB | 01011000 | 58 | Bite od 0 do 6 registra B premakne za eno mesto v levo, na mesto bita 0 vpiše vrednost 0, bit 7 se prenese v zastavico C pogojno kodnega registra CCR. |
ASRA | 01000111 | 47 | Bite od 1 do 7 registra A premakne za eno mesto v desno, bit 7 ostane nespremenjen, vrednost bita 0 se prenese v zastavico C pogojno kodnega registra CCR. |
ASRB | 01010111 | 57 | Bite od 1 do 7 registra B premakne za eno mesto v desno, bit 7 ostane nespremenjen, vrednost bita 0 se prenese v zastavico C pogojno kodnega registra CCR. |
CBA | 00010001 | 11 | Primerja vrednost registra A z vrednostjo registra B. Od vrednosti registra A se odšteje vrednost registra B, rezultat se ne shrani, spremeni pa se vrednost CCR. |
CLC | 00001100 | 0C | V zastavico C (prenos) v CCR se vpiše vrednost 0. |
CLI | 00001110 | 0E | Omogoči se prekinitvena maska. V zastavico I (prekinitvena maska) v CCR se vpiše vrednost 0. |
CLRA | 01001111 | 4F | V register A se vpiše vrednost 0. |
CLRB | 01011111 | 5F | V register B se vpiše vrednost 0. |
CLV | 00001010 | 0A | V zastavico V (preliv) v CCR se vpiše vrednost 0. |
COMA | 01000011 | 43 | Nad vrednostjo registra A se izvedede logična negacija (eniški komplement). |
COMB | 01010011 | 53 | Nad vrednostjo registra B se izvedede logična negacija (eniški komplement). |
DAA | 00011001 | 19 | Šestnajstiško število se pretvori v število BCD. |
DECA | 01001010 | 4A | Vrednost registra A se zmanjša za 1. |
DECB | 01011010 | 5A | Vrednost registra B se zmanjša za 1. |
INCA | 01001100 | 4C | Vrednost registra A se poveča za 1. |
INCB | 01011100 | 5C | Vrednost registra B se poveča za 1. |
INS | 00110001 | 31 | Vrednost registra S (kazalec sklada) se poveča za 1. |
INX | 00001000 | 08 | Vrednost registra X (indeksni) se poveča za 1. |
LSLA | 01001000 | 48 | Bite od 0 do 6 registra A premakne za eno mesto v levo, na mesto bita 0 vpiše vrednost 0, bit 7 se prenese v zastavico C pogojno kodnega registra CCR. |
LSLB | 01011000 | 58 | Bite od 1 do 7 registra B premakne za eno mesto v desno, na mesto bita 7 vpiše vrednost 0, vrednost bita 0 se prenese v zastavico C pogojno kodnega registra CCR. |
LSLD | 00000101 | 05 | Bite od 0 do 14 registra D premakne za eno mesto v levo, na mesto bita 0 vpiše vrednost 0, bit 13 se prenese v zastavico C pogojno kodnega registra CCR. |
LSRA | 01000100 | 44 | Bite od 1 do 7 registra A premakne za eno mesto v desno, na mesto bita 7 vpiše vrednost 0, vrednost bita 0 se prenese v zastavico C pogojno kodnega registra CCR. |
LSRB | 01010100 | 54 | Bite od 1 do 7 registra B premakne za eno mesto v desno, na mesto bita 7 vpiše vrednost 0, vrednost bita 0 se prenese v zastavico C pogojno kodnega registra CCR. |
LSRD | 00000100 | 54 | Bite od 1 do 15 registra B premakne za eno mesto v desno, na mesto bita 15 vpiše vrednost 0, vrednost bita 0 se prenese v zastavico C pogojno kodnega registra CCR. |
NEGA | 01000000 | 40 | Nad vrednostjo registra A se izvedede aritmetična negacija (dvojiški komplement). |
NEGB | 01000000 | 50 | Nad vrednostjo registra B se izvedede aritmetična negacija (dvojiški komplement). |
NOP | 00000001 | 01 | Ne naredi nič. Ukaz se uporablja v testne namene. Programski števec se poveča. |
PSHA | 00110110 | 36 | Vrednost registra A se preslika na lokacijo, ki je enaka vrednosti v SP (kazalcu sklada). Vrednost v kazalcu sklada se zmanjša za 1. |
PSHB | 00110111 | 37 | Vrednost registra B se preslika na lokacijo, ki je enaka vrednosti v SP (kazalcu sklada). Vrednost v kazalcu sklada se zmanjša za 1. |
PSHX | 00111100 | 3C | Vrednost zgornjih osem bitom registra X se preslika na lokacijo, ki sta enaka vrednosti v SP zmanjšano za vrednost 1 (SP-1) in vrednost spodnjih osem bitom registra X se preslika na lokacijo, ki sta enaka vrednosti v SP . Vrednost v kazalcu sklada se zmanjša za 2. |
PULA | 00110010 | 32 | Vrednost lokacije, ki je enaka vrednosti v SP (kazalcu sklada), povečano za vrednost 1 (SP+1), se preslika v register A. Vrednost v kazalcu sklada se poveča za 1. |
PULB | 00110011 | 33 | Vrednost lokacije, ki je enaka vrednosti v SP (kazalcu sklada), povečano za vrednost 1 (SP+1), se preslika v register B. Vrednost v kazalcu sklada se poveča za 1. |
PULX | 00111000 | 38 | Vrednost lokacije, ki je enaka vrednosti v SP (kazalcu sklada), povečano za vrednost 1 (SP+1), se preslika v zgornjih osem bitov registra X. Vrednost lokacije, ki je enaka vrednosti v SP (kazalcu sklada), povečano za vrednost 2 (SP+2), se preslika v spodnjih osem bitov registra X. Vrednost v kazalcu sklada se poveča za 2. |
ROLA | 01001001 | 49 | Bite od 0 do 6 registra A premakne za eno mesto v levo, na mesto bita 0 vpiše vrednost iz zastavice C pogojno kodnega registra CCR, bit 7 se prenese v zastavico C pogojno kodnega registra CCR. |
ROLB | 01011001 | 59 | Bite od 0 do 6 registra B premakne za eno mesto v levo, na mesto bita 0 vpiše vrednost iz zastavice C pogojno kodnega registra CCR, bit 7 se prenese v zastavico C pogojno kodnega registra CCR. |
RORA | 01000110 | 46 | Bite od 1 do 7 registra A premakne za eno mesto v desno, na mesto bita 7 vpiše vrednost iz zastavice C pogojno kodnega registra CCR, vrednost bita 0 se prenese v zastavico C pogojno kodnega registra CCR. |
RORB | 01010110 | 56 | Bite od 1 do 7 registra B premakne za eno mesto v desno, na mesto bita 7 vpiše vrednost iz zastavice C pogojno kodnega registra CCR, vrednost bita 0 se prenese v zastavico C pogojno kodnega registra CCR. |
RTI | 00111011 | 3B | Vrnitev iz prekinitve. Iz skalda se pobere vrednosti za PC, X, CCR, A in B. Vrednost v kazalcu sklada se poveča za 7. | RTS | 00111001 | 39 | Vrnitev iz podprograma. Vrednost lokacije, ki je enaka vrednosti v SP (kazalcu sklada), povečano za vrednost 1 (SP+1), se preslika v zgornjih osem bitov registra PC. Vrednost lokacije, ki je enaka vrednosti v SP (kazalcu sklada), povečano za vrednost 2 (SP+2), se preslika v spodnjih osem bitov registra PC. Vrednost v kazalcu sklada se poveča za 2. |
SBA | 00010000 | 10 | Od vrednosti registra A se odšteje vrednost registra B, rezultat se shrani v register A. |
SEC | 00001100 | 0D | V zastavico C (prenos) v CCR se vpiše vrednost 1. |
SEI | 00001111 | 0F | Onemogoči se prekinitvena maska. V zastavico I (prekinitvena maska) v CCR se vpiše vrednost 1. |
SEV | 00001011 | 0B | V zastavico V (preliv) v CCR se vpiše vrednost 1. |
SWI | 00111111 | 3F | Programska prekinitev. Na skad se skranjijo A, B, CCR, X in PC. Vrednost SP se zmanjša za 7. V Programski števec se vpišejo vrednosti z lokacij FFF8(16) in FFF9(16). |
TAB | 00010110 | 16 | Vrednost registra A se preslika v register B. |
TAP | 00000110 | 06 | Vrednost registra A se preslika v register CCR. |
TBA | 00010111 | 17 | Vrednost registra B se preslika v register A. |
TPA | 00000110 | 06 | Vrednost registra CCR se preslika v register A. |
TSTA | 01001101 | 4D | Primerja vrednost registra A z vrednostjo 0. Od vrednosti registra A se odšteje vrednost 0, rezultat se ne shrani, spremeni pa se vrednost CCR. |
TSTB | 01011101 | 5D | Primerja vrednost registra B z vrednostjo 0. Od vrednosti registra B se odšteje vrednost 0, rezultat se ne shrani, spremeni pa se vrednost CCR. |
TSX | 00110000 | 30 | Vrednost v kazalcu sklada (SP) se poveča za 1 in se preslika v indeksni register (X). |
TXS | 00110101 | 35 | Vrednost indeksnega registra (X) se zmanjša za 1 in se preslika v kazalec sklada (SP). |
Po vseh izvedenih ukazih se poveča vrednost v programskem števcu (PC) za 1. Lahko se tudi spremeni statusni register (CCR).
SERŠ Maribor, Strokovna gimnazija, leto: 2004/05, avtor: Boštjan Ferk