480 likes | 702 Views
Technika Mikroprocesorowa 1. Kody binarne. Wykład 2 1/47.
E N D
Technika Mikroprocesorowa 1 Kody binarne
Wykład 2 1/47 Kody binarne w technice mikroprocesorowejArytmetyka binarnych liczb całkowitychArytmetyka liczb stałopozycyjnychArytmetyka liczb zmiennopozycyjnych
Kody binarne - NB 2/47 NB
Kody binarne - NB 3/47 zakresy wartości:
Kody binarne - ZM 4/47 ZM
Kody binarne - ZM 5/47 zakresy wartości:
Kody binarne - U2 6/47 U2
Kody binarne - U2 7/47 zakresy wartości:
Kody binarne - U2 8/47
Kody binarne - U1 9/47 U1
Kody binarne - BCD 10/47 BCD
0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 Kody binarne - kod Gray’a 11/47 kod Gray’a tworzeniekolejnych słów kodu:
Kody binarne - ASCII 12/47 ASCII 128 kodów binarnych (0..127) reprezentujących: 33 kody sterujące i 95 podstawowych znaków alfanumerycznych Zastosowanie: komunikacja znakowa (tekstowa), obsługa wyświetlaczy mozaikowych, drukarek, klawiatur autonomicznych, itd. ASCII rozszerzony - dodatkowe 128 kodów (128..255) reprezentujących różne znaki pisarskie i semigrafikę.
Arytmetyka - NB 13/47 Dodawanie i odejmowanie liczb w NB Przeniesienie (CY) sygnalizuje: nadmiar przy dodawaniu NB pożyczkę przy odejmowaniu w NB
Arytmetyka - U2 14/47 Dodawanie i odejmowanie liczb w U2 Zał. S1, S2, S - znaki argumentów i wyniku (ich najstarsze bity) Nadmiar: przy dodawaniu w U2 występuje gdy S1=S2S przy odejmowaniu w U2 występuje gdy S1S2 i CY=S
Arytmetyka - BCD 15/47 Dodawanie i odejmowanie liczb w BCD Przeniesienie (CY) po korekcji sygnalizuje: nadmiar przy dodawaniu BCD pożyczkę przy odejmowaniu w BCD
i=X CY=x L1: 88 80 LW: X 02 X X L2: 35 C2 00 Arytmetyka - długie liczby 17/47 i=0 CY=0 88h + 35h + 0 = 0BDh i=1 CY=0 BD 80h + C2h + 0 = 142h 42 03 CY=1 i=2 02h + 00h + 1 = 03h CY=0 i=3 (>= m=3)
Arytmetyka - mnożenie bez znaku 19/47 UWAGA: ilość bitów potrzebnych do reprezentacji iloczynu równa się sumie liczby bitów czynników 1. Mnożenie przez wielokrotne dodawanie Zał: L1,L2 - 1-bajtowe czynniki, LW - 2-bajtowy iloczyn
Arytmetyka - mnożenie bez znaku 20/47 2. Mnożenie restytucyjne 1215 10101 (21) x 204 x 110 (6) 4860 101010 2430 10101 247860 1111110 (126) Zał: L1,L2 - 1-bajtowe czynniki, LW - 2-bajtowy iloczyn
Arytmetyka - mnożenie bez znaku 21/47 3. Przykłady mnożenia w asemblerze Z80
Arytmetyka - mnożenie bez znaku 24/47 • 4. Mnożenie długich liczb • operowanie dłuższymi ciągami bitów; • wykorzystanie procedur pomocniczych mnożących np. bajtbajt: • mnożenie tetrad jako cyfr szesnastkowych przy użyciu tabliczki mnożenia - opłacalne tylko dla liczb w BCD; • mnożenie przyśpieszone.
Arytmetyka - mnożenie bez znaku 25/47 • mnożenie przyśpieszone: • zał: x = Bx1 + x0 y = By1 + y0 (B=256) • w = xy = (Bx1 + x0)(By1 + y0) - 4 mnożenia 4 dodawania • niech: u = x1 - x0 i v = y1 - y0 wtedy: • uv = x1y0 + x0y1 - x1y1 - x0y0 x1y0 + x0y1 = uv + x1y1 + x0y0 • w = BBx1y1 + B(x1y0 + x0y1) + x0y0 = • = BBx1y1 + Buv + Bx1y1 + Bx0y0 + x0y0 = • = (BB + B)x1y1 + Buv + (B + 1)x0y0
Arytmetyka - mnożenie bez znaku 26/47 5. Mnożenie przez stałą Zał: wartość stałej jest znana na etapie pisania programu. Każda stała K ma n-bitowe rozwinięcie binarne: K = Jeżeli ilość bitów ki = 1 jest niewielka (1..4) to można zastosować regułę: L K = L 2i1 + L 2i2 + L 2i3 + L 2i4 gdzie i1, i2, i3, i4 oznaczają potęgi 2 dla których kiX = 1. Jeżeli K=2m to mnożenie jest równoważne m-krotnemu przesunięciu arytmetycznemu w lewo liczby L.
Arytmetyka - dzielenie bez znaku 28/47 1. Dzielenie przez wielokrotne odejmowanie zał: L1,L2 - 1-bajtowa dzielna i dzielnik, LW - 1-bajtowy iloraz
Arytmetyka - dzielenie bez znaku 29/47 2. Dzielenie przez potęgę 2 równoważne przesunięciu o odpowiednią ilość bitów w prawo
Arytmetyka - dzielenie bez znaku 30/47 3. Dzielenie restytucyjne zał: L1,L2 - 1-bajtowa dzielna i dzielnik, LW - 1-bajtowy iloraz LD - 2-bajtowa zmienna pomocnicza (rejestr)
-L2 L2: 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 Arytmetyka - dzielenie bez znaku 31/47 Przykład: kolejne stany LD przy dzieleniu L1=31 przez L2=7 LD: 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 reszta iloraz
Arytmetyka - dzielenie bez znaku 32/47 4. Przykłady dzielenia w asemblerze Z80 4.1. Dzielenie przez wielokrotne odejmowanie
Arytmetyka - dzielenie bez znaku 33/47 4.2. Dzielenie restytucyjne
Arytmetyka - liczby ze znakiem 34/47 Można stosować przedstawione algorytmy mnożenia i dzielenia uwzględniając znak wyniku operacji zgodnie z regułami matematycznymi
Arytmetyka - zapis stałopozycyjny 36/47 1. Format stałopozycyjny liczby binarnej • zakres reprezentowanych wartości: 0 .. 2m-2-n • przykładowe reprezentacje wartości rzeczywistych przy m=8 i n=4: • 10,25 00001010.0100 10,20 00001010.0011 = 10,1875 • ilość pozycji części całkowitej (m) i ułamkowej (n) zależy od: • wymaganej dokładności reprezentacji liczb rzeczywistych; • zakresu użytkowego liczb rzeczywistych. • Do reprezentacji liczb ze znakiem stosuje się kod U2.
Arytmetyka - zapis stałopozycyjny 37/47 Przykładowe formaty stałopozycyjne i osiągane w nich zakresy liczb: 2. Dodawanie i odejmowanie liczb stałopozycyjnych Operacje te przeprowadza się tak jak na liczbach całkowitych
Arytmetyka - zapis stałopozycyjny 38/47 3. Mnożenie liczb stałopozycyjnych
Arytmetyka - zapis stałopozycyjny 39/47 4. Dzielenie liczb stałopozycyjnych
Arytmetyka - zapis zmiennopozycyjny 40/47 1. Zasada zapisu zmiennopozycyjnego
Arytmetyka - zapis zmiennopozycyjny 41/47 Mantysa jest pamiętana zwykle w kodzie ZM (wyróżniony bit znaku). Cecha jest przechowywana wprost w kodzie U2 lub w tzw. przesuniętym U2:
Arytmetyka - zapis zmiennopozycyjny 42/47 2. Wzory podstawowych operacji arytmetycznych
Arytmetyka - zapis zmiennopozycyjny 43/47 3. Przykłady formatów zmiennopozycyjnych
Arytmetyka - zapis zmiennopozycyjny 45/47 4. Przykładowe algorytmy 4.1. Dodawanie i odejmowanie
Arytmetyka - zapis zmiennopozycyjny 46/47 4.2. Mnożenie
Arytmetyka - zapis zmiennopozycyjny 47/47 4.3.Dzielenie