Format zmiennopozycyjny IEEE 754.
Podstawowe informacje o operacjach arytmetycznych procesorów
Zamiana liczby dziesiętnej na postać IEEE 754
Przedstawić 0.085 jako liczbę zmiennopozycyjną pojedyńczej precyzji
1. Sprawdzamy znak liczby.
Ponieważ 0.085 jest liczbą dodatnią, bit znaku =0.
(-1)0 = 1.
2. Zapisać 0.085 w notacji naukowej o podstawie 2.
Tzn. Należy utworzyć liczbę z zakresu [1 <= n < 2] oraz potędze 2.
0.085 = (-1)0 * (1+fraction) * 2 power, lub:
0.085 / 2power = (1+fraction).
W ten sposób należy podzielić 0.085 przez potęgę 2 by otrzymać (1 + fraction).
0.085 / 2-1 = 0.17
0.085 / 2-2 = 0.34
0.085 / 2-3 = 0.68
0.085 / 2-4 = 1.36
Ostatecznie, 0.085 = 1.36 * 2-4
3. Znaleźć wykładnik.
Potegą 2 jest -4, podstawa dla formatu pojedyńczej precyzji wynosi 127. W ten sposób wykładnik exponent = 123(10), lub 01111011(2 - binarnie)
4. Zapisać ułamek w postaci binarnej
Część ułamkowa fraction = 0.36 . Nie ma możliwość dokładnego zapisu w postaci binarnej, można jedynie podać wartość przybliżoną na 23 bitach
0.1 = (1/2) = 2-1
0.01 = (1/4) = 2-2
0.001 = (1/8) = 2-3
Aproksymując 0.36, otrzymujemy:
0.36 = (0/2) + (1/4) + (0/8) + (1/16) + (1/32) +...
0.36 = 2-2 + 2-4 + 2-5+...
0.36(10) ~ 0.01011100001010001111011(2 - binarnie) .
W sumie otrzymujemy ciąg binarny: 01011100001010001111011.
Nie otrzymaliśmy liczby ułamkowej 0.36 dokładnej, dlatego w formacie IEEE 754 wystąpi bład konwersji
5. Zapisujemy liczbę 0.085 w formacie IEEE754 w odpowiedniej kolejności -
1 bit znaku, , 8 bitów znaku, i 23 bity na mantysę – część ułamkową
|
Znak |
Wykładnik |
Część ułamkowa - mantysa |
Dziesiętnie |
0 |
123 |
0.36 |
Binarnie |
0 |
01111011 |
01011100001010001111011 |
ASEMBLER 80x86 - język wewnętrzny procesora
Operacje arytmetyczne:
add, sub, inc, dec, mul/imul, div/idiv,
Operacje logiczne:
and, bt, btr, bts, not, or, rol, ror, shl, shr,
Operacje sterujące:
cmp, loop, skoki (rozgałęzienia), call, ret,
Operacje przesyłania danych:
lea, mov,
Operacje na stosie:
push, pop, pusha, popa,
Etykiety
Procedury (podprogramy)
Rejestry procesora
Stos
Zmienne - deklaracja zmiennych (db,dw,dd,rb)
Zadanie 1
A = 14, B = 24
Obliczyć A + B oraz A - B
Zadanie 2
A = 11.5, B = 19.5
Obliczyć A + B oraz A - B
Zadanie 3
A = 29, B = 42
Obliczyć A + B oraz A - B
Zadanie 4
Obliczyć sumę kontrolną CRC dla podanych wielomianów:
G(x) = x4 + x2 +x +1 = 10111
M(x) = 11111011
Zadanie 5
Obliczyć sumę kontrolną CRC dla podanych wielomianów:
G(x) = x4 + 1 = 10001
M(x) = 1101111
Zadanie 6 (2 punkty)
Zaimplementować procedurę wykonującą zamianę wprowadzonej przez użytkownika liczby dziesiętnej na odpowiadającą postać IEEE 754.