Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;out 1 -> volba dispeja
- ;out 2 -> volba segmentu
- ;inn 0xb -> aktivovany 1. riadok
- ;inn 0x7 -> aktivovany 2. riadok
- ;specialna pamat:
- ; adresa 88 -> bajt, či sa ma pocitat postupnost
- ; adresa 96 -> pocitadlo cisel postupnosti
- ;adresa 232 -> bool zobrazenie cisel
- ;nacitanie znakov cisel do specialnej pamate
- ; hgfedcba
- ;0: 11000000 192
- ;1: 11111001 249
- ;2: 10100100 164
- ;3: 10110000 176
- ;4: 10011001 153
- ;5: 10010010 146
- ;6: 10000010 130
- ;7: 11111000 248
- ;8: 10000000 128
- ;9: 10010000 144
- ; ULOZENIE segmentov do pamate
- ;___________________
- mvi d,192
- mvi a,120
- str a,d
- mvi d,249
- mvi a,128
- str a,d
- mvi d,164
- mvi a,136
- str a,d
- mvi d,176
- mvi a,144
- str a,d
- mvi d,153
- mvi a,152
- str a,d
- mvi d,146
- mvi a,160
- str a,d
- mvi d,130
- mvi a,168
- str a,d
- mvi d,248
- mvi a,176
- str a,d
- mvi d,128
- mvi a,184
- str a,d
- mvi d,144
- mvi a,192
- str a,d
- mvi d,0
- mvi a,200
- str a,d
- mvi d,0
- mvi a,208
- str a,d
- mvi d,0
- mvi a,216
- str a,d
- mvi d,2
- mvi a,96
- str a,d
- mvi d,255
- mvi a,232
- str a,d ; zobrazenie vypnute
- ;ulozenie nulovania vrchnych 4 bitov do pamate
- mvi c,0x0f
- mvi a,80
- str a,c
- Start:
- mvi d,0
- mvi a,96
- str a,d
- mvi c,1
- mvi d,0
- cyklus:
- pop a;
- pop a;
- pus c
- pus d
- mvi d,88
- ldr c,d
- cmi c,1
- pop d
- pop c
- jnz Nacitavanie
- ;pocitanie fibonacciho
- mvi a,0
- Delay:
- mvi b,5 ;tu sa sposobi delay aby napocitalo priblizne 1 cislo za sekundu
- inc a
- cmp a,b
- jzr Dalej
- jmp VYPIS2
- PokracujDELAY:
- jmp Delay
- Dalej:
- mov b,d
- add d,c
- mov c,b
- jmp FIBo
- Continue:
- jcy Start
- ;ukladanie pocitadla do pamate
- pus d
- pus c
- mvi d,96
- ldr c,d
- inc c
- str d,c
- pop c
- pop d
- Nacitavanie:
- ;nacitavanie z klavesnice
- inn a,0xb
- pus c
- pus d
- mvi d,80
- ldr c,d
- and a,c
- pop c
- pop d
- PrvyRiadok:
- mvi b,14 ;do B si ulozim hodnotu 1. stlpca A-cka po stlaceni tlacidla tak, aby po stlaceni rozdiel A a B bolo 0
- cmp a,b ;porovnam hodnoty A a B, ak je 0 (nula), tak preskocim na Prepni1 a aktivujem vsetky segmenty prislusneho dispeja
- jzr Prepni1
- mvi b,13 ;rovnako ako vyssie
- cmp a,b
- jzr Prepni2
- mvi b,11 ;rovnako ako vyssie
- cmp a,b
- jzr Prepni3
- mvi b,7 ;rovnako ako vyssie
- cmp a,b
- jzr Prepni4
- inn a,7
- pus c
- pus d
- mvi d,80
- ldr c,d
- and a,c
- pop c
- pop d
- DruhyRiadok:
- mvi b,14 ;do B si ulozim hodnotu 1. stlpca A-cka po stlaceni tlacidla tak, aby po stlaceni rozdiel A a B bolo 0
- cmp a,b ;porovnam hodnoty A a B, ak je 0 (nula), tak preskocim na Prepni1 a aktivujem vsetky segmenty prislusneho dispeja
- jzr Prepni5
- mvi b,13 ;rovnako ako vyssie
- cmp a,b
- jzr Koniec
- mvi b,11 ;rovnako ako vyssie
- cmp a,b
- jzr Koniec
- mvi b,7 ;rovnako ako vyssie
- cmp a,b
- jzr Koniec
- jmp Koniec
- ;-----------------------------------------------------
- ;-----------------------------------------------------
- Prepni1:
- pus d
- mvi d,1
- mvi c,88
- str c,d
- pop d
- jmp Start
- ;-----------------------------------------------------
- Prepni2:
- pus c
- pus d
- mvi d,0
- mvi c,88
- str c,d
- pop d
- pop c
- jmp Koniec
- ;-----------------------------------------------------
- Prepni3:
- pus c
- pus d
- mvi d,1
- mvi c,88
- str c,d
- pop d
- pop c
- jmp Koniec
- ;______________________________
- FIBo:
- ;__________
- pus a
- mov a,d ; jednotky
- pus b
- mvi b,0 ; desiatky
- pus c
- mvi c,0 ; stovky
- ;__________
- Cyklus1:
- pus a ; --------
- SBI a,100
- jcy Cyklus2 ; AK su jednotky mensie ako 100
- pop a ; -------
- sbi a,100 ; odcitaj 100 od jednotiek
- inc c ; stovky++
- jmp Cyklus1
- Cyklus2:
- pop a ; ---------
- pus a ; -------
- SBI a,10
- jcy Hotovo ; ak su jednotky mensie ako 10
- pop a; -------
- sbi a,10 ; odcitaj 10 od jednotiek
- inc b ; desiatky ++
- pus a ; ----------
- jmp Cyklus2
- Hotovo:
- pop a ; pocet jednotiek
- pus b
- mov b,a
- pus a
- mvi a,200 ; adresa jednotiek kvoli
- str a,b
- pop a
- pop b
- ; b desiatky
- pus a
- mov a,b
- pus b
- mvi b,208 ; adresa desiatok
- str b,a
- pop b
- pop a
- ; c stovky
- pus a
- mov a,c
- pus c
- mvi c,216 ; adresa stoviek
- str c,a
- pop c
- pop a
- pus d
- ;mov d,c
- ;adi d,48 ; KVOLI nastaveniu priznakov
- ;scall dsp
- pop d
- pop c
- pop b
- pus a
- pus b
- mvi a,224
- ldr b,a
- cmi b,1 ; ak som bol volany z prepni5
- pop b
- pop a
- jzr PokracujPrepni5
- ;scall dsp
- pus d
- ;mov d,c
- adi d,48 ; KVOLI nastaveniu priznakov
- pop d
- jmp Continue
- ;-----------------------------------------------------
- VYPIS2: ; NA PISANIE POCAS DELAY
- pus a
- pus b
- mvi b,232
- ldr a,b
- cmi a,255
- pop b
- pop a
- jzr VYPIS2real
- jmp BezVypisu
- VYPIS2real:
- pus a
- pus b ;
- pus c
- pus d
- mvi d,200
- ldr a,d
- mvi d,208
- ldr b,d
- mvi d,216
- ldr c,d
- ;____________________
- ; VYPIS STOVIEK:
- ;________
- pus a
- pus b
- ;________
- mvi a,13 ;len 3 ti displej
- out 1,a
- mvi b,120 ;vypocitanie adresy z spec.pamate
- shl c,3 ; C SHL 3 bity = C * 8
- add b,c
- LDR a,b ; teraz je v A hodnota segmentov
- out 2,a
- mvi a,255
- out 2,a
- ;________
- pop b
- pop a
- ;________
- ;________________
- ;VYPIS DESIATOK:
- ;________
- pus a
- ;________
- mvi a,11 ; druhy displej
- out 1,a
- mvi a,120
- shl b,3
- add a,b
- ldr b,a
- out 2,b
- mvi a,255
- out 2,a
- ;________
- pop a
- ;________
- ;__________________
- ;VYPIS JEDNOTIEK
- mvi b,7
- out 1,b ;prvy displej
- mvi b,120
- shl a,3
- add b,a
- ldr a,b
- out 2,a
- mvi a,255
- out 2,a
- ;__________
- pop d
- pop c
- pop b
- pop a
- ;__________
- BezVypisu:
- ;__________
- pus a
- pus b
- ;__________
- mvi a,224
- ldr b,a
- cmi b,1 ; ak som bol volany z prepni5
- ;__________
- pop b
- pop a
- ;__________
- jzr PokracujPrepni51
- jmp PokracujDELAY
- Prepni4:
- pus a
- pus b
- pus c
- pus d
- mvi d,232
- ldr a,d
- mvi b,255
- xor a,b
- str d,a
- pop d
- pop c
- pop b
- pop a
- jmp Koniec
- ;-----------------------------------------------------
- Prepni5: ; VYPIS COUNTER
- scall dsp
- ;________
- pus b
- pus a
- ;________
- mvi a,224
- mvi b,1
- str a,b ; "priznak" aby som sa vedel vratit
- ;________
- pop a
- pop b
- ;________
- ;___________
- pus d
- pus a
- ;__________
- mvi a,96
- ldr d,a ; do Dcka dam pocitadlo
- jmp FIBo ; po tomto by mali byt na
- ;200 jednotky
- ;208 desiatky
- ;216 stovky
- PokracujPrepni5:
- ;__________
- pop a
- pop d
- pus a
- pus b
- mvi a,0
- mvi b,10
- DVPS:
- jmp VYPIS2
- PokracujPrepni51:
- inc a
- cmp a,b
- jzr DKoniec
- jmp DVPS
- DKoniec:
- pop b
- pop a
- ;________
- pus b
- pus a
- ;________
- mvi a,224
- mvi b,0
- str a,b ; "priznak" aby som sa vedel vratit
- ;________
- pop a
- pop b
- ;________
- jmp Prepni1
- Koniec:
- jmp cyklus
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement