WOJSKOWA AKADEMIA TECHNICZNA
Sprawozdanie z pracy laboratoryjnej
Nr5-6
Grupa: I2Y3S1
Nr 7
Data: 2013-05-06
1. Na ocenę „dostatecznie”:
· Wypisze komunikat „Uruchomiono program p1.” i przeniesie kursor dwa wiersze niżej.
· Wypisze komunikat „Autorem programu jest Artur Piersa z grupy I2Y3S1” i przeniesie kursor do nowego wiersza.
· Wypisze komunikat „Numer wykonawcy w dzienniku = 7”. Nimer w dzienniku wypełni w trakcie wykonania właściwą liczbą, wykorzystując format %d i zadeklarowaną tablicę liczb całkowitych TNUMo 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 b7”. (Bez przenoszenia kursora do nowego wiersza).
· 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”:
· 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 ni2, niezależnie od wielkości liter, np. gdy sekwencja 3 znaków to „ni2” – wtedy kończy program również sekwencja np. „Ni2” i „nI2”.
3. 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 Artur Piersa z grupy I2Y3S1\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, 24 (r20) ;ustawienie wskaznika na 7 element (nr. 7)
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
checkb:
seqi r4,r3,98 ;czy to b?
beqz r4,question ;jesli nie wroc do question
check7:
addi r2,r2,1 ;zwiększ wskaźnik o 1
lb r3,(r2) ;ładowanie drugiego znaku z r2 do r3
seqi r4,r3,55 ;czy to 7?
beqz r4,question ;jeśli nie wróć do question
Enter:
lb r3,(r2) ;ładowanie czwartego znaku z r2 do r3
seqi r4,r3,10 ;czy to enter?
Koniec:
trap 0 ;kończy program
4. Algorytm programu p1.s:
5. Wydruk działania programu p1.s dla przykładowych wartości:
6. Kod źródłowy programu p2.s wraz z komentarzami opisującymi jego działanie:
kom1: .asciiz "Uruchomiono program p2.\n\n" ; komunikat 1
kom2: .asciiz "Autorem programu jest Artur Piersa z grupy I2Y3S1\n" ; komunikat 2
kom3: .asciiz "Jeśli chcesz zakończyć prace tej części programu, naciśnij dem: " ; komunikat 3
text1: .word kom1...
Bayaniss