Seštevanje z različnimi načini naslavljanja

Primer:

Sestavimo program, ki sešteje dve števili, vsako dolžine 2 bajta (prvo $31D6 in drugo $7FB0)! Program naj se nahaja v pomnilniku na naslovu $9000, rezultat pa shranimo na naslov $A004.

Uporabimo različne načine naslavljanja!

  1. takojšnje: podatke vpišemo v program kot del operacijske kode
  2. neposredno: podatki se nahajajo v pomnilniku na naslovu $A000
  3. posredno: podatki se nahajajo v pomnilniku na naslovu $A000

R E Š I T V E


1. takojšnje naslavljanje (#)
 
        org   $fffe
        fdb   start

        org   $9000
start   LDD   #$31D6
        ADDD  #$7FB0
        STD   $A004
        end

* nastavimo reset vektor
* z začetnim naslovom programa

* nastavimo začetek programa
* naložimo prvo 2-bajtno število
* prištejemo drugo 2-bajtno število
* in rezultat shranimo


2. neposredno naslavljanje
 
        org   $fffe
        fdb   start

        org   $a000
        fdb   $31D6
        fdb   $7FB0

        org   $9000
start   LDD   $A000
        ADDD  $A002
        STD   $A004
        end


* nastavimo reset vektor
* z začetnim naslovom programa

* podatke vstavimo v pomnilnik
* prvo število
* drugo število

* nastavimo začetek programa
* naložimo prvo število iz pomn. lokacije
* prištejemo drugo število iz pomn. lokacije
* in rezultat shranimo

3. posredno naslavljanje (?,X)
 
        org   $fffe
        fdb   start

        org   $a000
        fdb   $31D6
        fdb   $7FB0

        org   $9000
start   LDX   #$A000
        LDD   0,X
        ADDD  2,X
        STD   4,X
        end

* nastavimo reset vektor
* z začetnim naslovom programa

* podatke vstavimo v pomnilnik
* prvo število
* drugo število

* nastavimo začetek programa
* naložimo indeksni register z naslovom podatkov
* naložimo prvo število brez odmika naslova
* prištejemo drugo število z odmikom za 2 bajta
* in rezultat shranimo z odmikom štirih bajtov



K O N E C     R E Š I T E V


Naloge za reševanje in utrjevanje:

1. naloga: Sestavi program, ki sešteje dve enobajtni števili (prvo $2D in drugo $8E)! Program naj se nahaja v pomnilniku na naslovu $2000, rezultat pa shrani na naslov $6000.
Uporabi takojšnje, neposredno in posredno naslavljanje akumulatorja B (primeri zgoraj)! Ugotovi, kako veliko mora biti drugo število, da dobimo napačen rezultat!

2. naloga: Sestavi program, ki akumulator A zbriše in to stanje prestavi v akumulator B. Nato povečaj A na 5 in B na 3 ter ju seštej. Uporabljati smeš le vsebovano naslavljanje. Program naj se nahaja v pomnilniku na naslovu $2000.