Arytmometr Wielokrotnej Precyzji: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
brak opisu edycji
m (Amo przenosi stronę Arytmometr na Arytmometr Wielokrotnej Precyzji, bez pozostawienia przekierowania pod starym tytułem)
Nie podano opisu zmian
 
(Nie pokazano 5 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 10: Linia 10:
=== Dodawanie i odejmowanie liczb długich ===
=== Dodawanie i odejmowanie liczb długich ===


Każdy z argumentów oraz wynik zajmują 32 bity, czyli dwa słowa maszyny. Pierwszy argument pobierany jest z rejestrów uniwersalnych jednostki centralnej R1 i R2, drugi z dwóch kolejnych komórek pamięci. Adres pierwszej komórki pamięci określony jest argumentem efektywnym rozkazu. Wyniki działań przesyłane są do R1 i R2. Rozkazy ustawiają wskaźniki Z, M, V, C w rejestrze R0 stanyu programu:
Każdy z argumentów oraz wynik zajmują 32 bity, czyli dwa słowa maszyny. Pierwszy argument pobierany jest z rejestrów uniwersalnych jednostki centralnej R1 i R2, drugi z dwóch kolejnych komórek pamięci. Adres pierwszej komórki pamięci określony jest argumentem efektywnym rozkazu. Wyniki działań przesyłane są do R1 i R2. Rozkazy ustawiają wskaźniki Z, M, V, C w rejestrze R0 stanu programu:
* Wskaźnik Z zapalany jest w przypadku otrzymania w wyniku zera
* Wskaźnik Z zapalany jest w przypadku otrzymania w wyniku zera
* Wskaźnik M zapalany jest w przypadku otrzymania w wyniku liczby ujemnej
* Wskaźnik M zapalany jest w przypadku otrzymania w wyniku liczby ujemnej
Linia 26: Linia 26:
== Działania na liczbach zmiennoprzecinkowych ==
== Działania na liczbach zmiennoprzecinkowych ==


Liczba zmiennoprzecinkowa zajmuje trzy słowa maszyny. Mantysa ''m'' zajmuje pierwszych czterdzieści bitów i traktowana jest jako liczba zaprzecinkowa w notacji uzupełnień do dwóch. Argumenty czterech podstawowych operacji arytmetycznych oraz wyniki wszystkich operacji są liczbami znormalizowanymi, tzn. &frac12;<''m''<1 lub -1<''m''<-&frac12;. Cecha zajmuje ostatnie osiem bitów liczby i traktowana jest jako liczba całkowita w notacji uzupełnień do dwóch. Wszystkie bity mantysy i cechy zerowej snormalizowanej liczby zmiennoprzecinkowej są zerami.
Liczba zmiennoprzecinkowa zajmuje trzy słowa maszyny. Mantysa ''m'' zajmuje pierwszych czterdzieści bitów i traktowana jest jako liczba zaprzecinkowa w notacji uzupełnień do dwóch. Argumenty czterech podstawowych operacji arytmetycznych oraz wyniki wszystkich operacji są liczbami znormalizowanymi, tzn. &frac12;<=''m''<1 lub -1<''m''<=-&frac12;. Cecha zajmuje ostatnie osiem bitów liczby i traktowana jest jako liczba całkowita w notacji uzupełnień do dwóch. Wszystkie bity mantysy i cechy zerowej znormalizowanej liczby zmiennoprzecinkowej są zerami.


Poza normalizacją rozkazy zmiennoprzecinkowe są dwuargumentowe. Argument pierwszy zajmuje rejestry uniwersalne jednostki centralnej R1, R2 i R3, argument drugi - trzy kolejne komórki pamięci. Rozkaz normalizacji ma jeden argument, umieszczony w rejestrach R1, R2 i R3. Wyniki wszystkich rozkazów zmiennoprzecinkowych wpisywane są do rejestrów R1, R2 i R3. Na podstawie wartości wyniku ustawiane są wskaźniki Z, M i C. Wskaźnik Z zapalany jest, gdy wynik równa się zeru. Rejestry R1, R2 i R3 są wówczas zerowane. Wskaźnik M kest zapalany, gdy wynik jest liczbą ujemną. Wskaźnik C przechowuje bit chroniony wyniku. Przy normalizacji jest on zawsze zerem. Wskaźnik V pozostaje bez zmiany.
Poza normalizacją rozkazy zmiennoprzecinkowe są dwuargumentowe. Argument pierwszy zajmuje rejestry uniwersalne jednostki centralnej R1, R2 i R3, argument drugi - trzy kolejne komórki pamięci. Rozkaz normalizacji ma jeden argument, umieszczony w rejestrach R1, R2 i R3. Wyniki wszystkich rozkazów zmiennoprzecinkowych wpisywane są do rejestrów R1, R2 i R3. Na podstawie wartości wyniku ustawiane są wskaźniki Z, M i C. Wskaźnik Z zapalany jest, gdy wynik równa się zeru. Rejestry R1, R2 i R3 są wówczas zerowane. Wskaźnik M jest zapalany, gdy wynik jest liczbą ujemną. Wskaźnik C przechowuje bit chroniony wyniku. Przy normalizacji jest on zawsze zerem. Wskaźnik V pozostaje bez zmiany.


Gdy któryś z argumentów jest liczbą nieznormalizowaną lub zachodzi próba dzielenia przez zero, to niezależnie od wartości drugiego argumentu zgłaszane jest [[Przerwania|przerwanie]] (wyjątek stanowi zero nieznormalizowane). Rejestry R1, R2 i R3 oraz wskaźniki Z, M, C pozostają wówczas bez zmiany. W przypadku otrzymania w wyniku podmiaru lub nadmiaru cechy zgłaszane są odpowiednie [[Przerwania|przerwania], co nie blokujue zapisu wyniku do rejestrów R1, R2 i R3 oraz ustawienia wskaźników Z, M, C.
Gdy któryś z argumentów jest liczbą nieznormalizowaną lub zachodzi próba dzielenia przez zero, to niezależnie od wartości drugiego argumentu zgłaszane jest [[Przerwania|przerwanie]] (wyjątek stanowi zero nieznormalizowane). Rejestry R1, R2 i R3 oraz wskaźniki Z, M, C pozostają wówczas bez zmiany. W przypadku otrzymania w wyniku podmiaru lub nadmiaru cechy zgłaszane są odpowiednie [[Przerwania|przerwania]], co nie blokujue zapisu wyniku do rejestrów R1, R2 i R3 oraz ustawienia wskaźników Z, M, C.


=== Dodawanie i odejmowanie liczb zmiennoprzecinkowych ===
=== Dodawanie i odejmowanie liczb zmiennoprzecinkowych ===


Jeden ze składników sumy jest odczytywany z rejestrów, drugi składnik sumy z pamięci. Odjemna odczytywana jest z rejestrów, odjemnik z pamięci. W przypadku, gdy moduł różnicy cech argumentów jest większy lub równy 40, mniejszy argument traktowany jest jako zerowy. Działania na mantysach wykonywane są w sumatorze przedłużonym o dalszych 40 pozycji. Po normalizacji wyniku wykonywane jest zaokrąglenie. Po zaokrągleniu wynik ponownie sprowadzany jest do poztaci znormalizowanej.
Jeden ze składników sumy jest odczytywany z rejestrów, drugi składnik sumy z pamięci. Odjemna odczytywana jest z rejestrów, odjemnik z pamięci. W przypadku, gdy moduł różnicy cech argumentów jest większy lub równy 40, mniejszy argument traktowany jest jako zerowy. Działania na mantysach wykonywane są w sumatorze przedłużonym o dalszych 40 pozycji. Po normalizacji wyniku wykonywane jest zaokrąglenie. Po zaokrągleniu wynik ponownie sprowadzany jest do postaci znormalizowanej.


=== Mnożenie i dzielenie liczb zmiennoprzecinkowych ===
=== Mnożenie i dzielenie liczb zmiennoprzecinkowych ===


Mnożna umieszczona jest w pamięci, mnożnik w rejestrach. Działania na mantysach czynników wykonywane są z dokładnością analogiczną jak pw dodawaniu i odejmowaniu. Dzielna umieszczona jest w rejestrach, dzielna w pamięci. Wyznacza się 40 mitów mantysy ilorazu.
Mnożna umieszczona jest w pamięci, mnożnik w rejestrach. Działania na mantysach czynników wykonywane są z dokładnością analogiczną jak w dodawaniu i odejmowaniu. Dzielna umieszczona jest w rejestrach, dzielna w pamięci. Wyznacza się 40 bitów mantysy ilorazu.


=== Normalizacja ===
=== Normalizacja ===

Menu nawigacyjne