Skip to content

Instantly share code, notes, and snippets.

@kassens
Created January 2, 2010 15:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kassens/ab83ca5138b37bbd14a7 to your computer and use it in GitHub Desktop.
Save kassens/ab83ca5138b37bbd14a7 to your computer and use it in GitHub Desktop.
.data
# Speicherbereich für die eingegebene Personalausweisnnummer
pnr: .space 37
# Feld mit Multiplikationsfaktoren zur Prüfsummenberechnung
multipl: .word 7, 3, 1, 7, 3, 1
# Mit diesem Wert muß ein ASCII-Zeichen subtrahiert werden,
# um die entsprechende Ziffer als "echte" Zahl zu erhalten.
asciiverschiebung: .word 48
eingabetext: .asciiz "Geben Sie eine gültige Personalausweisnummer ein"
ausgabe_ungueltig: .asciiz "Die Personalausweisnummer ist ungültig oder abgelaufen."
ausgabe_gueltig: .asciiz "Der Personalausweis ist gültig."
.text
main:
# Die 36-stellige Personalausweisnummer einlesen.
la $a0, pnr
li $a1, 37
li $v0, 8
syscall
# Überprüfen, ob der Personalausweis noch gültig ist.
jal Gueltigkeitstest
# Ist der Personalausweis noch gültig, steht jetzt in $v0
# eine 1. Ist dies nicht der Fall, springe raus.
beq $v0, $zero, Ungueltig
# Überprüfen, ob der Personalausweis abgelaufen ist.
li $a0, 9 # Tag (tt)
li $a1, 9 # Monat (mm)
li $a2, 10 # Jahr (20JJ)
jal PersoIstNochNichtAbgelaufen
beqz $v0, Ungueltig
la $a0, ausgabe_gueltig
li $v0, 4
syscall
j ende
Ungueltig:
la $a0, ausgabe_ungueltig
li $v0, 4
syscall
ende:
li $v0, 10
syscall
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment