VAJE

1.Odpri vsa mozna okna v simulatorju. Odpri in nalozi program 2port.asm. Ugotovi in opiši, kakšna je vsebina: pomnilniškega naslova 0, naslova $2200, naslova $FFFE, registra A, programskega števca, kazalca na sklad.

 

pomnilniški naslov: Sprva je vsebina <00>, ko pa nalozimo program, je vsebina<F0>;

naslova $2200: Vsebina je <00>;

naslova $FFFE:Vsebina je <E0>;

registra A: Vsebina se spreminja: <00>, <F0>;

programskega števca: Vsebina se spreminja, po korakih:$E000,$EOO2, $EOO5, $EOO8, $EOO9, $EOOA, $EOOB, $EOOC, $EOOF;

kazalec na sklad ima vedno vrednost $0000.

 

2.Izvajaj program po korakih, pocasno in hitro. Kako spremembe vhodov na portu 1 vplivajo na izhode?

Ko pritisnemo na vhodu doloceno stikalo, zasveti tudi dolocena lucka.

 

3.Poišci vsebino PC, ko se izvaja skok na zacetek zanke.

Vsebina PC je "20".

 

4.Katerim registrom se med izvajanjem spreminja vsebina in zaradi cesa nastajajo spremembe?

Vsebine se spreminjajo registroma A in D.

 

5.Ponovno nalozi program in spremeni v pomnilniku vsebino prve lokacije programa (zamenjaj poljuben bit). Kako se obnaša spremenjeni program?

Zamenja razporeditv luck in tipk.

 

6.Kaj se zgodi, ce spremeniš vsebino PC?

Program ne bo deloval.

 

7.Spremeni program tako, da spremeniš reset vektor na naslov $5000. Zakaj program ne dela?

Simulatorja ne moremo zagnati, saj ni oznake START. Reset vektor nam ne kaze vec na zacetek programa.

 

8.Spremeni še zacetni naslov programa na vrednost $5000.

 

org $fffe

fdb $5000

org $5000

 

9.Spremeni program tako, da bo imel port1 na najtezjih dveh bitih vhode, ostali naj bodo izhodi. Postavi vse izhode na 1 (prizgi lucke). Uporabi takojšnje naslavljanje.

1.) Lucke prizgem z gumbom

2.) Lucke prizgem s takojsnjim naslavljanjem

 

 

 

 

 

10.Zgornji program predelaj tako, da boš za postavitev izhodov uporabil razširjeno naslavljanje. Za vpis vrednosti na doloceno lokacijo v pomnilniku (npr. na $4000) lahko uporabiš ukaza LDAA #$ff, STAA $4000 ali pa ORG $4000, FCB $ff.

Za vpis izhodov sem uporabil ukaza LDAA #$ff in STAA $4000.

 

11.Zgornji program predelaj tako, da boš za postavitev izhodov uporabil indeksno naslavljanje.

 

12.V zgornji program nekam v glavno zanko vrini vrstici LDAA #$FF, PSHA. Kaj se zgodi, ko se program izvaja? Popravi program tako, da boš vrednost FF s sklada pobral nazaj v akumulator A.

Spremeni se smerni register DDR. Na portu1 so samo izhodi.

 

13.Napisi program, ki prizge vse diode na portu1.

 

ddr          equ 0

dr            equ 2

org $fffe

fdb $5000

org $5000

ldaa #$1111

staa ddr

zanka      ldab #$ff

staa        dr

bra          zanka

end

 

14.Napisi program, ki steje v neskoncnost. Uporabi register A. Kaksna je koncna vrednost registra A?

Koncna vrednost registra A je $ff.

 

15.Napisi program, ki steje do $e0. Uporabi register A. Kaksna je koncna vrednost registra?

Koncna vrednost registra je $e0.

 

16.Napisi program, ki prizge poljubno diodo na plosci, ce je vrednost registra B vecja od 32. Vrednost v register B vpises v simulatorju.

 

ddr          equ 0

dr            equ 2

org $fffe

fdb $5000

org $5000

pricni      ldaa #$1111

staa        ddr

zanka      ldab #32

cmpb #32

beq         prizgi

bra          zanka

prizgi      ldaa #$1010

staa dr

bra          zanka

end

 

 

17.Opisi zgradbo mikrokrmilnika Motorole MC6803. Katere gradnike vsebuje, kako so povezani in katere registre ima procesor?

MC6803 je sestavljen iz procesorja, glavnega pomnilnika in V/I enot. Med seboj so povezani z vodili. Procesor ima PC (Program Counter), naslovni, podatkovni in ukazni register.

 

18.Kaj je PIO? Kako deluje v MC6803? Kaj je smerni register in kaj podatkovni register?

Smerni register (DDR) je dolocitelj vhodov in izhodov.

Podatkovni register (DR): preko njega se podatki iz naslovnega vodila prenesejo v ukazni register.

 

19.Katere nacine naslavljanja pozna MC6803? Opisi jih in navedi primere.

TAKOJSNJE - LDAA #$f1

DIREKTNO - LDAA $f1

RAZSIRJENO - LDAA $fffe

VSEBOVANO – INCA

INDEKSNO – X, 1

 

20.Napisi program, ki vpise podatek $1f v D register, $f1 na naslov $3000, vrednost  0 v akumulator A in zbrise prekinitveno masko (CLI). Izvajaj program po korakih in sproti preverjaj in opisi vsebino registra stanj.

 

org $fffe

fdb $1000

org $3000

fdb $f100

ldaa #0

ldab #$f1

 

21.Napisi program, ki ima na portu 1 na najtezjih bitih vhode, ostali naj bodo izhodi. Ce bomo postavili vhod b7 na 1, naj se prizgejo izhodi na b5, b4 in b3, ce pa bomo postavili vhod b6 na 1, naj se prizgejo izhodi na b2, b1 in b0.

           

 

22.Napisi program, ki vzpostavi sklad na naslovu $2000. Nanj shrani vse mozne registre, jih pobrisi in nato iz sklada vrni prvotne vrednosti. V kaksnem vrstnem redu moras jemati vrednosti iz sklada?

 

            org $fffe

            fdb $1000

            org $1000

            ldaa #$10

            ldab #$20

zanka  lds $2000

            psha

            pshb

            ldaa #$00

            ldab #$00

            pulb

            pula

            bra                 zanka

 

23.Napisi program, ki upravlja delovanje stiskalnice. Cilinder stiskalnice se iztegne samo takrat, ko sta pritisnjeni obe tipki, za desno in levo roko delavca. Ko je izhod, ki krmili cilinder v logicni 0, se cilinder samodejno (s pomocjo vzmeti) vrne v prvotni polozaj. Kako moras spremeniti program, da bo krmilil cilinder, ki ga v prvotni polozaj vrne poseben izhod?

 

ddr       equ 0

dr            equ 2

            org $fffe

            fdb $1000

                org $1000

pricni    ldaa #%00111111

            staa             ddr

zanka  ldaa            dr

            cmpa #$c0

            beq             stisk

            jmp             zanka

stisk     ldaa #%00000001

            staa             dr

            ldaa #$00

            staa             dr

            jmp             zanka

            end

 

24.Napisi program, ki sesteje dve poljubni stevili, ki smo ju rocno vpisali v registra A in B. vsoto prikazi v binarni obliki na izhodih. Kaksen je rezultat za vsoto manjso od 256 in kaksen za vecjo? Kje se pozna, da je bila vsota vecja od 256?

 

ddr       equ 0

dr         equ 2

            org $fffe

            fdb $1000

            org $1000

pricni    ldaa #%11111111

            staa ddr

zanka  ldaa #10

            ldab #20

            aba

            staa             dr

                jmp                 zanka