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