Extra 7
Godt jobbet!
Å mestre SLEDE8 kan bli avgjørende i denne førjulstiden! Hvis du synes denne var lett kan du prøve deg på e-læringsmodulen med kode 8e7c9876c85e5471.
; Føde består av to tall, A og B
; Skriv ut resultatet av A + B som en ASCII-streng
; Eksempel: A=0xA0 og B=0x08 => '168'
; Eksempel: A=0xFF og B=0xFF => '510'
; R10 = antall hundre å skrive ut.
; R11 = antall tiere å skrive ut.
; R12 = antall enere å skrive ut.
; R15 = antall bytes lest
les:
; Sjekk om vi har lest 2 bytes, hvis ja skriv ut tekst istedenfor
SETT r2, 2
LIK r15, r2
BHOPP sjekkResultat
; Les inn føde, og inkrementer lest føde antall med 1
LES r0
SETT r2, 1
PLUSS r15, r2
tallSjekk100:
; Sjekk om størrelsen i første byte er over 200
SETT r2, 200
SEL r0, r2
BHOPP 100leggTil2
; Sjekk om størrelsen i første byte er over 100
SETT r2, 100
SEL r0, r2
BHOPP 100leggTil1
HOPP tallSjekk10
100leggTil2:
SETT r2, 2
PLUSS r10, r2
SETT r2, 200
MINUS r0, r2
HOPP tallSjekk10
100leggTil1:
SETT r2, 1
PLUSS r10, r2
SETT r2, 100
MINUS r0, r2
HOPP tallSjekk10
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
tallSjekk10:
; Sjekk om størrelsen i første byte er over 90
SETT r2, 90
SEL r0, r2
BHOPP 10leggTil9
; Sjekk om størrelsen i første byte er over 80
SETT r2, 80
SEL r0, r2
BHOPP 10leggTil8
; Sjekk om størrelsen i første byte er over 70
SETT r2, 70
SEL r0, r2
BHOPP 10leggTil7
; Sjekk om størrelsen i første byte er over 60
SETT r2, 60
SEL r0, r2
BHOPP 10leggTil6
; Sjekk om størrelsen i første byte er over 50
SETT r2, 50
SEL r0, r2
BHOPP 10leggTil5
; Sjekk om størrelsen i første byte er over 40
SETT r2, 40
SEL r0, r2
BHOPP 10leggTil4
; Sjekk om størrelsen i første byte er over 30
SETT r2, 30
SEL r0, r2
BHOPP 10leggTil3
; Sjekk om størrelsen i første byte er over 20
SETT r2, 20
SEL r0, r2
BHOPP 10leggTil2
; Sjekk om størrelsen i første byte er over 10
SETT r2, 10
SEL r0, r2
BHOPP 10leggTil1
HOPP tallSjekk1
10leggTil9:
SETT r2, 9
PLUSS r11, r2
SETT r2, 90
MINUS r0, r2
HOPP tallSjekk1
10leggTil8:
SETT r2, 8
PLUSS r11, r2
SETT r2, 80
MINUS r0, r2
HOPP tallSjekk1
10leggTil7:
SETT r2, 7
PLUSS r11, r2
SETT r2, 70
MINUS r0, r2
HOPP tallSjekk1
10leggTil6:
SETT r2, 6
PLUSS r11, r2
SETT r2, 60
MINUS r0, r2
HOPP tallSjekk1
10leggTil5:
SETT r2, 5
PLUSS r11, r2
SETT r2, 50
MINUS r0, r2
HOPP tallSjekk1
10leggTil4:
SETT r2, 4
PLUSS r11, r2
SETT r2, 40
MINUS r0, r2
HOPP tallSjekk1
10leggTil3:
SETT r2, 3
PLUSS r11, r2
SETT r2, 30
MINUS r0, r2
HOPP tallSjekk1
10leggTil2:
SETT r2, 2
PLUSS r11, r2
SETT r2, 20
MINUS r0, r2
HOPP tallSjekk1
10leggTil1:
SETT r2, 1
PLUSS r11, r2
SETT r2, 10
MINUS r0, r2
HOPP tallSjekk1
;;;;;;;;;;;; LEGG TIL RESTERENDE SOM enere
tallSjekk1:
PLUSS r12, r0
HOPP les
sjekkResultat:
; FØRST SJEKK OM VI MÅ OVERFØRE NOE FRA 1'ere til 10'ere, OG SÅ 10'ere til 100.
SETT r2, 10
SEL r12, r2
BHOPP fiksEnere
SETT r2, 10
SEL r11, r2
BHOPP fiksTiere
HOPP skrivUt
fiksEnere:
SETT r2, 1
PLUSS r11, r2
SETT r2, 10
MINUS r12, r2
HOPP sjekkResultat
fiksTiere:
SETT r2, 1
PLUSS r10, r2
SETT r2, 10
MINUS r11, r2
skrivUt:
SETT r2, 0x30
PLUSS r10, r2 ; Nummer til ascii nummer
PLUSS r11, r2
PLUSS r12, r2
SKRIV r10
SKRIV r11
SKRIV r12
Flag
EGG{ba92ae3a9af1a157703ca83d9a9fb11d}