L1 I0X3S1 19, WOJSKOWA AKADEMIA TECHNICZNA


WOJSKOWA AKADEMIA TECHNICZNA

Architektura i organizacja komputerów II

Sprawozdanie z pracy laboratoryjnej

Nr1

Grupa: I0X3S1

Autor: Karolina Dembek

Nr 19

Data: 2011-04-15I. Rozkazy przesłań:

  1. LW

Zgodnie z założeniem rozkaz ten ma przesłać jedno słowo (32 bity) z pamięci do rejestru.

a)

Kod programu:

.data

liczba1: .word 45

.text

lw r1, liczba1

trap 0

Spodziewany rezultat to zmiana zawartości rejestru r1 na 45.

Co faktycznie nastąpiło, po wykonaniu programu w rejestr r1 zawiera wartość 45. Liczba 45 mieści się na 32 bitach a więc nie było przeszkód w wykonywaniu rozkazu.

b)

Kod programu:

.data

liczba1: .word 27

.text

lw r0, liczba1

trap 0

Spodziewany rezultat to zapisanie w rejestrze r0 wartości 27.

Jednak to nie nastąpiło ponieważ rejestr r0 zawiera stałą wartość 0, która nie ulegnie zmianie. Otrzymany rezultat to więc wartość 0 w rejestrze 0.

  1. LF

Rozkaz ten ładuje z pamięci liczbę typu float

a)

Kod programu:

.data

liczba: .float 123

.text

lf f1, liczba

trap 0

Spodziewamy się, że wartość 123 zostanie załadowana do rejestru f1. Co też się dzieje.
W tym wypadku wartość oczekiwana pokryła się z wartością otrzymaną.

b)

Kod programu:

.data

liczba: .word 450

.text

lf f1, liczba

trap 0

Znowu oczekiwanym wynikiem jest zapisanie do rejestru f1 liczby 450. Tym razem jednak tak się nie dzieje. Nie można bowiem załadować wartości typu word do rejestru typu float. Wynik tego programu to nadal liczba 0 w rejestrze f1.

II. Rozkazy arytmetyczne i logiczne:

  1. ADDI

Rozkaz ten dodaje do wartości rejestru liczbę podana w rozkazie i zapisuje wynik
w rejestrze.

a)

Kod programu:

.data

liczba: .word 10

.text

lw r1, liczba

addi r2, r1, 10

trap 0

Spodziewana wartość po wykonaniu tego programu to wartość 20 zapisana w rejestrze r2. Tak też się dzieje, ponieważ wartości wpisane są poprawnie i program może się wykonać poprawnie. Wartość oczekiwana zgadza się z wartością otrzymaną.

b)

Kod programu:

.data

liczba: .word 5

.text

lw r1, liczba

addi r2, r1, liczba

trap 0

Teraz spodziewalibyśmy się, że wynikiem tego programu będzie wartość 10 w rejestrze r2. Jednak nie jest to prawdą. Rozkaz ADDI w tym wypadku nie pobiera wartości komórki `liczba', wykorzystuje za to adres tej komórki jako argument. Adres ten wynosi 1000h (4096d). A więc wynikiem tego rozkazu będzie wartość 4196 w rejestrze r2. Spowodowane to jest tym, że rozkaz ADDI służy do dodawania do rejestru liczby natychmiastowej podanej
w argumencie rozkazu a nie liczby zapisanej w pamieci czy rejestrze.

  1. SUB

Rozkaz ten odejmuje wartość rejestru od drugiego i wynik zapisuje w rejestrze zapisanym jako pierwszy argument.

a)

Kod programu:

.data

liczba_A: .word 100

liczba_B: .word 40

.text

lw r1, liczba_A

lw r2, liczba_B

sub r3, r1, r2

trap 0

Program ten wykonuje odejmowanie i jakby można się spodziewać ostatecznie w rejestrze r3 pojawi się liczba 60. Co oczywiście jest prawdą jako, że równanie 100-40 daje wynik 60,
a w programie nie ma błędów.

b)

Kod programu:

.data

liczba_A: .word -2147483647

liczba_B: .word 2147483647

.text

lw r1, liczba_A

lw r2, liczba_B

sub r3, r1, r2

trap 0

Znowu wykonujemy odejmowanie tym razem spodziewać byśmy się mogli wartości:

-4294967294, co jest naturalnym wynikiem działania -2147483647-2147483647. Jednak ku naszemu zdziwieniu wartość w rejestrze r3 wynosi 2. Wartość ta wynika z braku odpowiedniej liczby bitów aby zapisać tak dużą ujemną liczbę.

III. Rozkazy skoków

  1. BEQZ

Rozkaz ten przyrównuje wartość pierwszego argumentu do 0, jeżeli ten warunek jest spełniony i pierwszy argument rozkazu równy jest zero to program ustawia licznik rozkazów na adres etykiety ustawionej jako drugi argument rozkazu BEQZ.

a)

Kod programu:

.data

liczba_A: .word 0

liczba_B: .word 35

liczba_C: .word 11

.text

lw r1, liczba_A

lw r2, liczba_B

lw r3, liczba_C

beqz r1, zakladka

addi r4, r1, r2

zakladka:

trap 0

Zgodnie z tym co ustawiliśmy rozkaz BEQZ ma nam pominąć rozkaz ADDI i zakończyć program tylko po wczytaniu danych do rejestru. Tak też się stało ponieważ wartość rejestru r1 wynosi 0. Rezultat oczekiwany pokrył się więc z rezultatem osiągniętym.

b)

Kod programu:

.data

liczba_A: .word 12

liczba_B: .word 35

liczba_C: .word 11

.text

lw r1, liczba_A

lw r2, liczba_B

lw r3, liczba_C

beqz r1, zakladka

addi r4, r1, r2

zakladka:

trap 0

Teraz znowu spodziewalibyśmy się, że rejestr r4 pozostanie równy 0. Jednak jest to mylne ponieważ tym razem rozkaz skoku BEQZ jest nieefektywny co jest spowodowane wartością niezerową w rejestrze r1. A więc rezultat jest inny od wartości oczekiwanej i w rejestrze r4 zapisana została wartość 47, co jest zgodne z wynikiem dodawania 35 i 12.

  1. TRAP

Rozkaz ten powoduje przesłanie sterowania do systemu.

a)

Kod programu:

.data

.text

trap 0

Jak mogliśmy się spodziewać program wykonał się poprawnie i poprawnie zadziałał rozkaz trap, zakańczając wykonywanie się programu. Rezultat spodziewany jest więc zgodny
z otrzymanym.

b)

Kod programu:

.data

.text

trap 87.666

W programie tym wystąpi błąd ponieważ trap nie przyjmuje takich wartości i odrzuca je. Program ten będzie się więc wykonywał w nieskończoność a raczej dopóki nie skończy się pamięć systemie.

IV. Rozkazy zmiennoprzecinkowe

  1. ADDF

Rozkaz ten ma za zadanie dodać do siebie dwie liczby typu float zapisane w rejestrach

i zapisać wynik w rejestrze będącym pierwszym argumentem rozkazu.

a)

Kod programu:

.data

liczba_A: .float 11.11

liczba_B: .float 55.55

.text

lf f1, liczba_A

lf f2, liczba_B

addf f3, f2, f1

trap 0

Spodziewamy się, że program ten da nam w wyniku wartość 66.66 zapisaną w rejestrze f3, ponieważ jest to dobry wynik dodawania 11.11 i 55.55. I tym razem oczekiwana wartość pokryła się z rezultatem.

b)

Kod programu:

.data

liczba_A: .word 11

liczba_B: .float 55.55

.text

lw r1, liczba_A

lf f2, liczba_B

addf f3, f2, r1

trap 0

Tym razem spodziewalibyśmy się wartości 66.55 w rejestrze f3. To nie jest prawda, gdyż rozkaz ADDF nie przetwarza argumentów nie będących w formacie float a więc i zapisanch w rejestrach r. Rozkaz ten zwróci błąd i wartość f3 pozostanie 0.

  1. LTF

Rozkaz ten porównuje wartości rejestrów podanych do rozkazu jako argumenty. Sprawdza czy pierwszy jest mniejszy od drugiego. Jeżeli tak to ustawia rejestr FPSR na 1.

a)

Kod programu:

.data

liczba_A: .float 11.11

liczba_B: .float 55.55

.text

lf f1, liczba_A

lf f2, liczba_B

ltf f3, f1

trap 0

Program ten jak można się spodziewać porównuje liczbę 11.11 i 55.55, ponieważ pierwsza jest mniejsza od drugiej to spodziewamy się ustawienie rejestru FPSR na 1. Co też następuje. A więc mamy wynik zgodny z oczekiwaniami.

b)

Kod programu:

.data

liczba_A: .float 99.99

liczba_B: .float 55.55

.text

lf f1, liczba_A

lf f2, liczba_B

ltf f3, f1

trap 0

Ten program także działa zgodnie z oczekiwaniami ponieważ liczba 99.99 jest większa od liczby 55.55. A więc rejestr FPSR równa się 0.

Wnionski:

Pisząc programy trzeba pamiętać o możliwości przekroczenia liczby mieszczącej się w danym rejestrze co może prowadzić do przekłamań w wynikach albo do nie otrzymania ich wcale. Należy również zwracać uwagę aby podawać właściwe argumenty do rozkazów ponieważ to grozi nie wykonaniem się rozkazu wcale. A także właściwym formacie zmiennych.

2



Wyszukiwarka

Podobne podstrony:
L5 I0X3S1 19, WOJSKOWA AKADEMIA TECHNICZNA
Wojskowa Akademia Techniczna8
Rynek pracy, Wojskowa Akademia Techniczna - Zarządzanie i Marketing, Licencjat, II Rok, Semestr 3, R
Formy pieniądza, Wojskowa Akademia Techniczna - Zarządzanie i Marketing, Licencjat, II Rok, Semestr
BADANIA, Wojskowa Akademia Techniczna - Zarządzanie i Marketing, Licencjat, II Rok, Semestr 4, Badan
Ustanie stosunku pracy, Wojskowa Akademia Techniczna - Zarządzanie i Marketing, Licencjat, II Rok, S
Pytania z nr folii + odpowiedzi, Wojskowa Akademia Techniczna (WAT), Lokalne Sieci Komputerowe, Zali
Wojskowa Akademia Techniczna
Wojskowa Akademia Techniczna
Czas pracy, Wojskowa Akademia Techniczna - Zarządzanie i Marketing, Licencjat, II Rok, Semestr 3, Po
5. Wykład MP, Wojskowa Akademia Techniczna (WAT), Obwody i Sygnały, Materiały 2013
8. Wykład, Wojskowa Akademia Techniczna (WAT), Obwody i Sygnały, Materiały 2013
6. Wyklad MP, Wojskowa Akademia Techniczna (WAT), Obwody i Sygnały, Materiały 2013
ZARZADZANIE-STRATEGICZNE-1, Wojskowa Akademia Techniczna - Zarządzanie i Marketing, Licencjat, II Ro
mojeok, Wojskowa Akademia Techniczna
21++, Ćwiczenia nr 21, WOJSKOWA AKADEMIA TECHNICZNA
Tworzenie łańcucha wartości dodanej, Tworzenie Łańcucha Wartości Dodanej, WOJSKOWA AKADEMIA TECHNI
LAB 36, WOJSKOWA AKADEMIA TECHNICZNA

więcej podobnych podstron