Dag 10

Ny SLEDE8 oppgave!
image

Håper du er klar for nye utfordringer i SLEDE8.

Fint hvis du rapporterer tilbake med verifikasjonskoden når du har løst e-læringsmodulen med kode 82ec70284b51eb12. Utviklerverktøyet finner du fortsatt her.

Dokumentasjonen finner du også samme sted som tidligere, eller på GitHub.

📎 SLEDE8.md

image

image

image

; Føde består av to tall, A og B
; Skriv ut resultatet av (A + B) mod 256 som en ASCII-streng

; Eksempel: A=0xA0 og B=0x08 => '168'
; Eksempel: A=0xFF og B=0xFF => '254'

FØDE: 0309

KODE:

; Les inn føde
LES r0
LES r1

; Regn ut mod, resultatet befinner seg i r0
PLUSS r0, r1
SETT r1, 0xff ; 255 (Teksten sier 256, men med & bitwise skal man bruke n-1, så da passer det jo fint med 0xff. Ref: https://www.jacksondunstan.com/articles/1946)
OG r0, r1

; Nå har r0 mod nummeret vi er ute etter, nå må vi bare skrive dette som ascii

; 100'er SJEKK!
SETT r1, 200
SEL r0, r1
BHOPP skriv200ogMinus
SETT r1, 100
SEL r0, r1
BHOPP skriv100ogMinus
HOPP tiere           ; Ingen 100'ere treff!

skriv200ogMinus:
SETT r10, 0x32
SKRIV r10          ; Skriv ut ascii "2"
SETT r10, 200
MINUS r0, r10      ; Trekk fra 200, siden vi har skrevet dette tallet
SETT r15, 1        ; Sett r15 til 1 for å indikere at vi har skrevet en 100'er posisjon
HOPP tiere

skriv100ogMinus:
SETT r10, 0x31
SKRIV r10          ; Skriv ut ascii "1"
SETT r10, 100
MINUS r0, r10      ; Trekk fra 100, siden vi har skrevet dette tallet
SETT r15, 1        ; Sett r15 til 1 for å indikere at vi har skrevet en 100'er posisjon
HOPP tiere


; 10'er SJEKK!
tiere:

SETT r1, 90
SEL r0, r1
BHOPP skriv90ogMinus
SETT r1, 80
SEL r0, r1
BHOPP skriv80ogMinus
SETT r1, 70
SEL r0, r1
BHOPP skriv70ogMinus
SETT r1, 60
SEL r0, r1
BHOPP skriv60ogMinus
SETT r1, 50
SEL r0, r1
BHOPP skriv50ogMinus
SETT r1, 40
SEL r0, r1
BHOPP skriv40ogMinus
SETT r1, 30
SEL r0, r1
BHOPP skriv30ogMinus
SETT r1, 20
SEL r0, r1
BHOPP skriv20ogMinus
SETT r1, 10
SEL r0, r1
BHOPP skriv10ogMinus
SETT r10, 1
LIK r10, r15
BHOPP skriv0
HOPP enere

skriv90ogMinus:
SETT r10, 0x39
SKRIV r10
SETT r10, 90        ; Skriv ut ascii "9"
MINUS r0, r10      ; Trekk fra 90, siden vi har skrevet dette tallet
SETT r14, 1        ; Sett r14 til 1 for å indikere at vi har skrevet en 10'er posisjon
HOPP enere

skriv80ogMinus:
SETT r10, 0x38
SKRIV r10          ; Skriv ut ascii "8"
SETT r10, 80
MINUS r0, r10      ; Trekk fra 80, siden vi har skrevet dette tallet
SETT r14, 1        ; Sett r14 til 1 for å indikere at vi har skrevet en 10'er posisjon
HOPP enere

skriv70ogMinus:
SETT r10, 0x37
SKRIV r10          ; Skriv ut ascii "7"
SETT r10, 70
MINUS r0, r10      ; Trekk fra 70, siden vi har skrevet dette tallet
SETT r14, 1        ; Sett r14 til 1 for å indikere at vi har skrevet en 10'er posisjon
HOPP enere

skriv60ogMinus:
SETT r10, 0x36
SKRIV r10          ; Skriv ut ascii "6"
SETT r10, 60
MINUS r0, r10      ; Trekk fra 60, siden vi har skrevet dette tallet
SETT r14, 1        ; Sett r14 til 1 for å indikere at vi har skrevet en 10'er posisjon
HOPP enere

skriv50ogMinus:
SETT r10, 0x35
SKRIV r10          ; Skriv ut ascii "5"
SETT r10, 50
MINUS r0, r10      ; Trekk fra 50, siden vi har skrevet dette tallet
SETT r14, 1        ; Sett r14 til 1 for å indikere at vi har skrevet en 10'er posisjon
HOPP enere

skriv40ogMinus:
SETT r10, 0x34
SKRIV r10          ; Skriv ut ascii "4"
SETT r10, 40
MINUS r0, r10      ; Trekk fra 40, siden vi har skrevet dette tallet
SETT r14, 1        ; Sett r14 til 1 for å indikere at vi har skrevet en 10'er posisjon
HOPP enere

skriv30ogMinus:
SETT r10, 0x33
SKRIV r10          ; Skriv ut ascii "3"
SETT r10, 30
MINUS r0, r10      ; Trekk fra 30, siden vi har skrevet dette tallet
SETT r14, 1        ; Sett r14 til 1 for å indikere at vi har skrevet en 10'er posisjon
HOPP enere

skriv20ogMinus:
SETT r10, 0x32
SKRIV r10          ; Skriv ut ascii "2"
SETT r10, 20
MINUS r0, r10      ; Trekk fra 20, siden vi har skrevet dette tallet
SETT r14, 1        ; Sett r14 til 1 for å indikere at vi har skrevet en 10'er posisjon
HOPP enere

skriv10ogMinus:
SETT r10, 0x31
SKRIV r10          ; Skriv ut ascii "1"
SETT r10, 10
MINUS r0, r10      ; Trekk fra 10, siden vi har skrevet dette tallet
SETT r14, 1        ; Sett r14 til 1 for å indikere at vi har skrevet en 10'er posisjon
HOPP enere

skriv0:
SETT r10, 0x30
SKRIV r10
HOPP enere


; 1'er SJEKK!
enere:
SETT r10, 0x30
PLUSS r0, r10
SKRIV r0
STOPP

image

Flag

PST{++AndKissesWillBeAwardedToYou}