AK Cw. 3.2
Arytmetyka stało i zmiennoprzecinkowa
Do ćwiczenia wykorzystaj programy zapisane w katalogu ARYTMETYKA
1. Przedstaw binarne reprezentacje (na 16 bitach) następujacych liczb dziesiętnych i zapisz je w postaci szesnastkowej (liczby ujemne w uzupełnieniu dwójkowym):
a. 0
b. 5
c. -5
d. -1
e. największa liczba dodatnia
f. najmniejsza liczba ujemna
2. Program zapisany w pliku ADl.EXE dodaje dwie liczby całkowite wprowadzone z klawiatury .
Wykonaj ten program dla następujących argumentów:
a) 15000 i 10000
b) 32000 i 4096
c) 32000 i 32000
d) 32000 i 33000
e) 32000 i 34000
f) 20000 i 70000
Zinterpretuj wyniki otrzymane dla punktów b-f.
3. Plik AD2.EXE zawiera ten sam program w języku Pascal skompilowany z włączoną kontrolą zakresu.
Wykonaj ten pogram dla danych z punktów e i f.
Jaka jest różnica w porównaniu z programem ADl ?
4. Przedstaw binarne reprezentacje liczb dziesiętnych 0.25 i 0.75:
a. w postaci stałoprzecinkowej
b. w postaci zmiennoprzecinkowej (jako liczba 32 bitowa)
5. Uruchom program ZMIENNO.EXE i porównaj reprezentacje otrzymane w punkcie 4 z reprezentacjami tych samych liczb dostarczonymi przez program ZMIENNO.EXE.
Pyt. 5.1. Czy wartości prezentowane na ekranie zgadzają się z Twoimi obliczeniami?
Pyt. 5.2. Dlaczego w liczbach 80-bitowych mantysa zawiera o jedną jedynkę więcej niż w liczbach 32 i 64-bitowych?
6. Zaobserwuj reprezentacje liczb:
a. 0.1
b. 0.2
c. 1.6.10 -19
Pyt. 6.1. Czy liczbę 0.1 można zapisać dokładnie w postaci zmiennoprzecinkowej? Uzasadnij odpowiedź.
7.. W wymienionych niżej plikach zapisano programy obliczające kolejne wartości funkcji silnia.
Przyjęto następującą reprezentację zmiennych zmiennoprzecinkowych :
a) SILNIAR - typ REAL w języku PASCAL
b) SILNIAS - zmienna rzeczywista krótka (SINGLE) w procesorze 8087
c) SILNIAD - zmienna rzeczywista długa (DOUBLE) w procesorze 8087
d) SILNIAE - zmienna rzeczywista rozszerzona(EXTENDED) w procesorze 8087
Zbadaj przy jakiej wartości argumentu funkcji silnia nastąpi nadmiar - zmiennoprzecinkowy. Jaka jest ostatnia poprawnie obliczona wartość funkcji silnia w każdym przypadku?
Wykorzystując wiadomości o reprezentacji liczb zmiennoprzecinkowych w procesorze 8087 zinterpretuj otrzymane wyniki.
Uwaga!
W języku Turbo Pascal liczba typu REAL zajmuje 6 bajtów ( mantysa 5 bajtów, cecha 1 bajt).
8. Napisz program w języku asemblera
a) dodający
b) odejmujący
dwie liczby całkowite 128 bitowe.
dane i wyniki umieść pod następującymi adresami:
argumenty 3000:0000 i 3000:0010
wynik 3000:0020
ADD - dodaj SUB - odejmij
ADC - dodaj z przeniesieniem SBB - odejmij z pożyczka