WOJSKOWA AKADEMIA TECHNICZNA
Architektura i organizacja komputerów II
Sprawozdanie z pracy laboratoryjnej
Nr5-6
Grupa:I1Y6S1
Autor: Wierzbowski Łukasz
Data: 18.04.2012Na ocenę „dostatecznie”:
Wypisze komunikat „Uruchomiono program p1.” i przeniesie kursor dwa wiersze niżej.
Wypisze komunikat „Autorem programu jest ... z grupy … ” (gdzie miejsca … należy wypełnić danymi autora programu) i przeniesie kursor do nowego wiersza.
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.
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, który jest trzema pierwszymi literami nazwiska).
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.
Na ocenę „dostatecznie plus”:
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 pierwszych liter nazwiska, niezależnie od wielkości liter, np. gdy sekwencja 3 znaków to „dEm” - wtedy kończy program również sekwencja np. „DeM” i „dEM”.
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 TNUM
k1: .asciiz "Uruchomiono program p1.\n\n" ;komunikat nr 1 wyswietlany na ekranie
k2: .asciiz "Autorem programu jest Łukasz Wierzbowski z grupy I1Y6S1\n" ; komunikat nr 2 wyswietlany na ekranie
k3: .asciiz "Jesli chcesz zakonczyc prace tej czesci programu, nacisnij md: " komunikat nr 4 wyswietlany na ekranie
PrintIntFormat: .asciiz "Numer wykonawcy w dzienniku = %d\n" ; komunikat nr 3 wyswietlany na ekranie
.align 2
text1: .word k1 ;w text1 zawiera się adres k1
text2: .word k2 ;w text2 zawiera się adres k2
text3: .word k3 ;w text3 zawiera się adres k3
PrintIntPar: .word PrintIntFormat ;w PrintIntPar zawiera się adres PrintIntFormat
PrintIntValue: .space 4
bufor: .space 80 ;rezerwacja miejsca na bufor
wczytaj: .word 0,bufor,80
.text
addi r14,r0,text1 ;w r14 zapisany zostaje ciąg znaków text1
trap 5 ;wyświetla text1
addi r14,r0,text2 ;w r14 zapisany zostaje ciąg znaków text2
trap 5 ;wyświetla text2
addi r20, r0, TNUM ;w r20 ustawiamy adres na pierwszy element TNUM
lw r1, 24 (r20) ;zczytanie 7 pozycji z tabeli TNUM (0+6*4)
sw PrintIntValue, r1 ;wpisanie wartości r1 do PrintIntValue
addi r14,r0,PrintIntPar ;rejestr r14 zawiera ciąg znaków PrintIntPar
trap 5 ;wyświetla PrintIntPar
pytanie:
addi r14,r0,text3 w r14 zapisany zostaje ciąg znaków text3
trap 5 ;wyświetla text3
addi r14,r0,wczytaj ;r14 zawiera 80 bajtów pustego miejsca
trap 3 ;wczytanie znaków z klawiatury
addi r2,r0,bufor ;ustawienie r2 na pierwszy element bufora
lb r3,(r2) wczytanie elementu z r2( bufora)
sprawdzajam:
seqi r4,r3,109 ;czy to m?
beqz r4,pytanie ;jeśli nie skocz do pytanie
sprawdzajc:
addi r2,r2,1 ustawienie r2 na drugi element bufora
lb r3,(r2) wczytanie elementu z r2( bufora)
seqi r5,r3,100 ;czy to d?
beqz r5,pytanie ;jeśli nie skocz do pytanie
SprawdzajEnter:
addi r2,r2,1 ustawienie r2 na trzeci element bufora
lb r3,(r2) wczytanie elementu z r2( bufora)
seqi r4,r3,10 ;czy to ENTER?
beqz r4,pytanie ;jeśli nie skocz do pytanie
Koniec:
trap 0 koniec programu
Wydruk działania programu p1.s dla przykładowych wartości:
Algorytm programu p1.s:
Kod źródłowy programu p2.s wraz z komentarzami opisującymi jego działanie:
.data
k1: .asciiz "Uruchomiono program p2.\n\n" ;komunikat nr 1 wyswietlany na ekranie
k2: .asciiz "Autorem programu jest Łukasz Wierzbowski z grupy I1Y6S1\n"
;komunikat nr 2 wyswietlany na ekranie
k3: .asciiz "Jesli chcesz zakonczyc prace tej czesci programu,nacisnij d0j: "
;komunikat nr 3 wyswietlany na ekranie
.align 2
text1: .word k1 ;w text1 zawiera się adres k1
text2: .word k2;w text1 zawiera się adres k2
text3: .word k3;w text1 zawiera się adres k3
buffer: .space 80 ;rezerwacja miejsca na bufor
wczytaj: .word 0,buffer,80
.text
addi r14,r0,text1 w r14 zapisany zostaje ciąg znaków text1
trap 5 wyświetla text1
addi r14,r0,text2 w r14 zapisany zostaje ciąg znaków text2
trap 5 wyświetla text2
pyt:
addi r14,r0,text3 w r14 zapisany zostaje ciąg znaków text3
trap 5 ;wyświetla text3
addi r14,r0,wczytaj ;r14 zawiera 80 bajtów pustego miejsca
trap 3 ;wczytanie znaków z klawiatury
addi r2,r0,buffer ;ustawienie r2 na pierwszy element bufora
lb r3,(r2) wczytanie elementu z r2( bufora)
sprawdzajdD:
seqi r4,r3,100 ; czy to małe d?
seqi r5,r3,68 ; czy to duze d?
OR r6,r5,r4
;sprawdzam czy to małe lub duże d zostało podane przez użytkownika
beqz r6,pyt ;jeśli nie skocz do pyt
sprawdzaj1:
addi r2,r2,1 ustawienie r2 na drugi element bufora
lb r3,(r2) wczytanie elementu z r2( bufora)
seqi r4,r3,48 ;czy to 0?
beqz r4,pyt ;jeśli nie skocz do pyt
sprawdzajjJ:
addi r2,r2,1 ustawienie r2 na trzeci element bufora
lb r3,(r2) wczytanie elementu z r2( bufora)
seqi r4,r3,106 ;czy to małe j?
seqi r5,r3,74 ;czy to duze j?
OR r6,r5,r4
sprawdzam czy to małe lub duże J zostało podane przez użytkownika
beqz r6,pyt ;jeśli nie skocz do pyt
sprawdzajEnter:
addi r2,r2,1 ustawienie r2 na czwarty element bufora
lb r3,(r2) wczytanie elementu z r2( bufora)
seqi r4,r3,10 czy to ENTER??
beqz r4,pyt ;jeśli nie skocz do pyt
koniec:
trap 0; koniec programu
Algorytm programu p2.s:
Wydruk działania programu p2.s dla przykładowych wartości: