Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; definice pro nas typ procesoru
- .include "m169def.inc"
- ; podprogramy pro praci s displejem
- .org 0x1000
- .include "print.inc"
- ; Zacatek programu - po resetu
- .org 0
- JMP start
- ; Zacatek programu - hlavni program - zatim neni potreba
- ; .org 0x100
- inkrement:
- INC R27
- RET
- inkrement2:
- LSL R27
- INC R27
- RET
- start:
- ; Inicializace zasobniku - kvuli displeji
- LDI R16, 0xFF
- OUT SPL, R16
- LDI R16, 0x04
- OUT SPH, R16
- ; Inicializace displeje
- call init_disp
- ; R20 = (4 * R16 + 3 * R17 - R18) / 8
- LDI R16, 224
- LDI R17, 8
- LDI R18, -16
- MOV R26, R16 ; Rozdeleni 16-bitoveho vysledku na registry R27 a R26
- LDI R27, 0
- LSL R26 ; Nasobeni 4
- BRCS inkrement
- LSL R26
- BRCS inkrement2
- MOV R19, R17 ; Nasobeni 3
- LSL R17
- BRVS chyba ; Detekce preteceni - 'overflow'
- ADD R17, R19
- BRVS chyba
- ADD R16, R17
- BRVS chyba ; Detekce preteceni - 'overflow'
- SUB R16, R18 ; Odecteni R18
- BRVS chyba
- ASR R16 ; Deleni 8. ASR na rozdil od LSR ponecha znamenko
- BRCS chyba ; Detekce prenosu - 'carry'
- ASR R16
- BRCS chyba
- ASR R16
- BRCS chyba
- ; Zobrazeni na displej
- MOV R20, R16 ; Zobrazeni vysledku - mam ulozeno napriklad 3C - potrebuji zobrazit 2 znaky
- MOV R18, R16
- LDI R19, 0x0F
- AND R18, R19 ; AND - logicky soucin
- LSR R16
- LSR R16
- LSR R16
- LSR R16
- ; Jedna se o cislo
- LDI R19, 48 ; 48 = ASCII hodnota '0'
- LDI R17, 10
- CP R16, R17 ; Odecteni - nastaveni 'carry flagu'
- BRLO prevod1
- ; Jedna se o pismeno
- LDI R19, 55
- prevod1:
- ADD R16, R19 ; Pricteni '0'
- ; Cislo
- LDI R19, 48
- CP R18, R17
- BRLO prevod2
- ; Pismeno
- LDI R19, 55
- prevod2:
- ADD R18, R19
- LDI R17, 2 ; Pozice znaku
- CALL show_char
- MOV R16, R18
- LDI R17, 3
- CALL show_char
- JMP end
- chyba:
- LDI R16, 'C'
- LDI R17, 2
- CALL show_char
- LDI R16, 'H'
- LDI R17, 3
- CALL show_char
- LDI R16, 'Y'
- LDI R17, 4
- CALL show_char
- LDI R16, 'B'
- LDI R17, 5
- CALL show_char
- LDI R16, 'A'
- LDI R17, 6
- CALL show_char
- JMP end
- ; Zastaveni programu - nekonecna smycka
- end:
- JMP end ; Pripadne 'rjmp PC'
Advertisement
Add Comment
Please, Sign In to add comment