Ćwiczenie XIII

 

1. Pojęcia

            Format zmiennopozycyjny IEEE 754.

            Podstawowe informacje o operacjach arytmetycznych procesorów

2. Wiadomości

 

 

2.1 Format zmiennopozycyjny IEEE 754

 

 

 

2.2. Zamiana z postaci dziesiętnej na format IEEE 754

 

    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

 

2.3 Informacje ogólne - operacje arytmetyczne procesorów

 

            ASEMBLER 80x86 - język wewnętrzny procesora

            Informacje ogólne

                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)

 

3. Zadania i ćwiczenia

 

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.