Sprawozdanie
Architektura
i organizacja komputerów II
Laboratorium nr 5-6
Sokołowski Michał I0Y4S1 nr 16
Treść
zadania:
1.
Na ocenę „dostatecznie”: zaprojektować (algorytm, opis)
i zaimplementować program p1.s, który::
a. Wypisze komunikat „Uruchomiono program p1.” i przeniesie kursor dwa wiersze niżej.
b. Wypisze komunikat „Autorem programu jest ... z grupy … ” (gdzie miejsca … należy wypełnić danymi autora programu) i przeniesie kursor do nowego wiersza.
c. Wypisze komunikat „Numer wykonawcy w dzienniku = …”. Miejsce wykropkowane program wypełni w trakcie wykonania właściwą liczbą, wykorzystując format %d i zadeklarowaną tablicę liczb całkowitych TNUM o zainicjowanych wartościach kolejnych liczb całkowitych bez znaku: 1, 2, … 25. Wypisana liczba nie może być zadeklarowana statycznie jako napis, należy jej wartość przed wypisaniem odczytać z TNUM.
d. Wypisze komunikat „Jesli chcesz zakonczyc prace tej czesci programu, nacisnij …”. (Bez przenoszenia kursora do nowego wiersza, w miejsce … programista wpisze tekst sekwencji kończącej na dst).
e. Wczyta tekst z klawiatury. Jeśli wprowadzony tekst to sekwencja kończąca na dst (i oczywiście Enter), program, zakończy się, jeśli naciśnięto inny klawisz (np. sam Enter) lub sekwencję klawiszy różną od sekwencji kończącej na dst, program powróci do wykonywania działań z punktów 1d, 1e.
2. Na ocenę „dostatecznie plus”: wykonać zadania na dst, a ponadto zaprojektować (algorytm, opis) i zaimplementować program p2.s, który będzie wykonywał punkty 1.a (z uwzględnieniem nazwy programu p2) i 1.b jak powyżej, bez punktu 1.c, ale punkty d i e należy zmodyfikować: warunkiem zakończenia programu p2.s jest wczytanie sekwencji 3 znaków, podanej przez prowadzącego, niezależnie od wielkości liter, np. gdy sekwencja 3 znaków to „aBc” – wtedy kończy program również sekwencja np. „AbC” i „aBC”.
Sekwencje
kończące
Wersja zadania |
Sekwencja na 3 |
Sekwencja na 3+ |
4 |
ag |
9kc |
Kod źródłowy programu p1.s
.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
wiersz1: .asciiz "Uruchomiono program p1.\n\n"
wiersz2: .asciiz "Autorem programu jest Michał Sokołowski z grupy I0Y4S1\n"
wiersz3: .asciiz "Jesli chcesz zakonczyc prace tej czesci programu, nacisnij ag: "
Nr: .asciiz "Numer wykonawcy w dzienniku = %d\n"
text1: .word wiersz1
text2: .word wiersz2
text3: .word wiersz3
Nrwyk: .word Nr
NUM: .space 4
bufor: .space 80
Wczyt: .word 0,bufor,80
.text
addi r14,r0,text1 ;wyswietl wiersz1
trap 5
addi r14,r0,text2 ;wyswietl wiersz2
trap 5
addi r10, r0, TNUM ;w r10 przechowuj adres tablicy TNUM
lw r1, 60(r10)
sw NUM, r1
addi r14,r0,Nrwyk
trap 5
Petla:
addi r14,r0,text3 ;Wyswietl wiersz3
trap 5
addi r14,r0,Wczyt ;wczytaj do r14
trap 3
addi r2,r0,bufor
lbu r3,(r2)
a:
seqi r4,r3,97 ;sprawdz czy pierwszy znak to "a"
beqz r4,Petla
g:
addi r2,r2,1 ;r2++ zeby sprawdzic nastepny znak
lbu r3,(r2)
seqi r5,r3,103 ;sprawdz czy drugi znak to "g"
beqz r5,Petla
Enter:
addi r2,r2,1
lbu r3,(r2)
seqi r4,r3,10 ;sprawdz czy 3 znak to Enter
beqz r4,Petla
Koniec:
trap 0
Algorytm programu p1:
Zrzut ekranu programu p1
Program
na początku wypisuje dwa komunikaty informujące użytkownika jaki
program został uruchomiony, kto jest autorem programu, numer jego
grupy i nr w dzienniku.
Następnie program wyświetla komunikat
informujący jaką sekwencję znaków trzeba wprowadzić żeby
zakończyć działanie programu. Komunikat ten będzie powtarzany
dopóki użytkownik nie wprowadzi żądanej sekwencji znaków
Kod źródłowy programu
p2
.data
wiersz1: .asciiz "Uruchomiono program p2.\n\n"
wiersz2: .asciiz "Autorem programu jest Michał Sokołowski z grupy I0Y4S1\n"
wiersz3: .asciiz „Jesli chcesz zakonczyc prace tej czesci programu,nacisnij 9kc: "
text1: .word wiersz1
text2: .word wiersz2
text3: .word wiersz3
bufor: .space 80
Wczyt: .word 0,bufor,80
.text
addi r14,r0,text1 ;wyswietl wiersz1
trap 5
addi r14,r0,text2 ;wyswietl wiersz2
trap 5
Petla:
addi r14,r0,text3 ;Wyswietl wiersz3
trap 5
addi r14,r0,Wczyt ;wczytaj do r14
trap 3
addi r2,r0,bufor
lbu r3,(r2)
czy9:
seqi r4,r3,57
beqz r4,Petla
K_lub_k:
addi r2,r2,1
lbu r3,(r2)
seqi r4,r3,75
seqi r5,r3,107
XOR r6,r5,r4
beqz r6,Petla
C_lub_c:
addi r2,r2,1
lb r3,(r2)
seqi r4,r3,67 ;sprawdzam mała litere
seqi r5,r3,99 ;spradzam duza litere
XOR r6,r5,r4 ; sprawdzam czy ktoras z nich zostala wpisana
beqz r6,Petla ;jezeli tak to skok sie nie wykona
Enter:
addi r2,r2,1
lbu r3,(r2)
seqi r4,r3,10
beqz r4,Petla
Koniec:
trap 0;
Algorytm programu p2:
Zrzuty ekranu programu p2
Program
na początku wypisuje dwa komunikaty informujące użytkownika jaki
program został uruchomiony, kto jest autorem programu, oraz jego
numer grupy
Następnie program wyświetla komunikat informujący
jaką sekwencję znaków trzeba wprowadzić żeby zakończyć
działanie programu. Komunikat ten będzie powtarzany dopóki
użytkownik nie wprowadzi żądanej sekwencji znaków, przy czym nie
jest brana pod uwagę wielkość znaków