Kod źródłowy programu p1.s wraz z komentarzami opisującymi jego działanie:
.data
TNUM: .word 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 ; deklaracja tablicy
kom1: .asciiz "Uruchomiono program p1.\n\n" ; komunikat pierwszy wyświetlany na ekranie
kom2: .asciiz "Autorem programu jest Karolina Dembek z grupy I0X3S1\n" ; komunikat drugi wyświetlany na ekranie
kom3: .asciiz "Jesli chcesz zakonczyc prace tej czesci programu, nacisnij dem: " ; komunikat czwarty wyświetlany na ekranie
PrintIntFormat: .asciiz "Numer wykonawcy w dzienniku = %d\n"
; komunikat trzeciy wyświetlany na ekranie.align 2
text1: .word kom1 ; text1 zawiera adres kom1
text2: .word kom2 ; text2 zawiera adres kom2
text3: .word kom3 ; text1 zawiera adres kom1
PrintIntPar: .word PrintIntFormat ;PrintIntPar zawiera adres PrintIntFormat
PrintIntValue: .space 4
;wczytywanie z klawiatury
buffer: .space 80 ; rezerwuje miejsce na bufor
load: .word 0,buffer,80
.text
addi r14,r0,text1 ; r14 zawiera informację: ciąg znaków text1
trap 5 ; wyświetl zawartość r14,czyli komunikat 1
addi r14,r0,text2 ; r14 zawiera informację: ciąg znaków text2
trap 5 ; wyświetl zawartość r14,czyli komunikat 2
;Wypisanie napisu trzeciego z %d:
addi r20, r0, TNUM ;ustawienie pierwszego elementu tablicy na r20
lw r1, 72 (r20) ;ustawienie wskaznika na 19 element (nr. 19)
sw PrintIntValue, r1 ; i wpisanie jego wartości do r1
addi r14,r0,PrintIntPar ;r14 zawiera informację: ciąg znaków PrintIntPar
trap 5 ;wyświetl zawartość r14, czyli PrintIntFormat
question:
addi r14,r0,text3 ; r14 zawiera informację: ciąg znaków text3
trap 5 ; wyświetl zawartość r14, czyli text3
addi r14,r0,load ; r14 zawiera informację: 80 pustych znaków
trap 3 ; Wczytaj z klawiatury 80 pierwszych znaków do buffer
addi r2,r0,buffer ; przypisuje r2 zawartość buffer
lb r3,(r2) ; ładowanie pierwszego znaku z r2 do r3
checkd:
seqi r4,r3,100 ;czy to d?
beqz r4,question ;jesli nie wroc do question
checke:
addi r2,r2,1 ;zwiększ wskaźnik o 1
lb r3,(r2) ;ładowanie drugiego znaku z r2 do r3
seqi r4,r3,101 ;czy to e?
beqz r4,question ;jeśli nie wróć do question
checkm:
addi r2,r2,1 ;zwiększ wskaźnik o 1
lb r3,(r2) ;ładowanie trzeciego znaku z r2 do r3
seqi r5,r3,109 ;czy to m?
beqz r5,question ;jeśli nie wróć do question
Enter:
addi r2,r2,1 ;zwiększ wskaźnik o 1
lb r3,(r2) ;ładowanie czwartego znaku z r2 do r3
seqi r4,r3,10 ;czy to enter?
beqz r4,question ;jeśli nie wróć do question
Koniec:
trap 0 ;kończy program
.data
kom1: .asciiz "Uruchomiono program p2.\n\n" ; komunikat 1
kom2: .asciiz "Autorem programu jest Karolina Dembek z grupy I0X3S1\n" ; komunikat 2
kom3: .asciiz "Jeśli chcesz zakończyć prace tej części programu, naciśnij dem: " ; komunikat 3
.align 2
text1: .word kom1 ; text1 zawiera adres kom1
text2: .word kom2 ; text2 zawiera adres kom2
text3: .word kom3 ; text3 zawiera adres kom3
buffer: .space 80 ; rezerwuje miejsce na bufor
load: .word 0,buffer,80
.text
addi r14,r0,text1 ;r14 zawiera informację: ciąg znaków text1
trap 5 ;wyświetl zawartość r14
addi r14,r0,text2 ;r14 zawiera informację: ciąg znaków text2
trap 5 ;wyświetl zawartość r14
question:
addi r14,r0,text3 ;r14 zawiera informację: ciąg znaków text3
trap 5 ;wyświetl zawartość r14
addi r14,r0,load ;r14 zawiera informację: 80 pustych znaków
trap 3 ;Wczytaj z klawiatury 80 pierwszych znaków do buffer
addi r2,r0,buffer ;przypisuje r2 zawartość buffer
lb r3,(r2) ;ładowanie pierwszego znaku z r2 do r3
sprawdzajDd:
seqi r4,r3,68 ;czy to D?
seqi r5,r3,100 ;czy to d?
XOR r6,r5,r4 ;sprawdz czy to duze lub czy to male d
beqz r6,question ;jeśli nie jest to ani duże, ani małe d skocz do question
sprawdzajEe:
addi r2,r2,1 ; zwiększ wskaźnik o 1
lb r3,(r2) ; ładowanie drugiego znaku z r2 do r3
seqi r4,r3,69 ;czy to E?
seqi r5,r3,101 ;czy to e?
XOR r6,r5,r4 ;sprawdz czy to duze lub czy to male e
beqz r6,question ;jeśli nie jest to ani duże, ani małe d skocz do question
sprawdzajMm:
addi r2,r2,1 ; zwiększ wskaźnik o 1
lb r3,(r2) ; ładowanie trzeciego znaku z r2 do r3
seqi r4,r3,77 ; czy to M?
seqi r5,r3,109 ; czy to m?
XOR r6,r5,r4 ; sprawdz czy to duze lub czy to male f
beqz r6,question ; jeśli nie jest to ani duże, ani małe f skocz do question
sprawdzaj:
addi r2,r2,1 ; zwiększ wskaźnik o 1
lb r3,(r2) ; ładowanie czwartego znaku z r2 do r3
seqi r4,r3,10 ; czy to Enter?
beqz r4,question ; jeślni nie jest to enter skocz do question
koniec:
trap 0; ; kończy program