1. 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