L5_I2Y3S1_7.docx

(344 KB) Pobierz
WOJSKOWA AKADEMIA TECHNICZNA

WOJSKOWA AKADEMIA TECHNICZNA

Architektura i organizacja komputerów II

 

 

 

 

 

 

 

Sprawozdanie z pracy laboratoryjnej

Nr5-6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Grupa: I2Y3S1

Autor: Artur Piersa

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 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 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:

              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

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:

.data

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

                 

.align         2

text1:        .word       kom1...

Zgłoś jeśli naruszono regulamin