Architektura Systemów komputerowych Laboratorium nr 5.
Operacje mnożenia w kodach NKB, ZM, U1, U2.
1. Mnożenie w kodzie NKB
7
000111
13
001101
-----------------
111
00000000111
001101
00000000000
001101
00000011100
001101
---------------------------
00000100011
1
00000100011
00000111000
001101
00000000000
001101
---------------------------
00001011011
2. Mnożenie liczb w zapisie znak-moduł
Pomnóż wartości bezwzględne mnożnej i mnożnika zgodnie z algorytmem dla kodu NKB. Jeżeli mnożna i mnożnik mają taki sam znak wynik ma znak dodatni, natomiast przy różnych znakach wynik ma znak ujemny.
3. Mnożenie liczb w zapisie uzupełnień do 1
3. 1 Mnożna ujemna, mnożnik dodatni
Dla każdej jedynki w mnożniku dodaj do iloczynu odpowiednio przesuniętą mnożną. Na najmniej znaczącej pozycji wstaw 1. Dodaj przeniesienie cykliczne.
-7
111000
13
001101
-----------------
1 11111
11111111000
11111100011
-----------------
11111011011
11
11111011011
└>
1
-----------------
11111011100
1 1111 111
11111011100
11111000111
-----------------
11110100011
└>
1
-----------------
11110100100
3.2 Mnożna dodatnia, mnożnik ujemny Wyznacz uzupełnienie do 1 mnożnej i mnożnika. Dla każdej jedynki w uzupełnionym do 1
mnożniku dodaj do iloczynu odpowiednio przesuniętą uzupełnioną do 1 mnożną. Na najmniej znaczącej pozycji wstaw 1. Dodaj przeniesienie cykliczne.
7
000111
-13
110010
-----------------
111000
001101
-----------------
1
1111
1111111000
1111100011
-----------------
1111011011
└>
1
-----------------
1111011100
1 111 111
1111011100
1111000111
-----------------
1110100011
└>
1
-----------------
1110100100
3.3 Mnożna ujemna, mnożnik ujemny
Wyznacz uzupełnienie do 1 mnożnej i mnożnika. Dla każdej jedynki w uzupełnionym do 1
mnożniku dodaj do iloczynu odpowiednio przesuniętą uzupełnioną do 1 mnożną. Na najmniej znaczącej pozycji wstaw 0.
-7
111000
-13
110010
----------------
000111
001101
----------------
111
00000000111
00000011100
----------------
00000100011
1
00000100011
00000111000
----------------
00001011011
4. Mnożenie w zapisie Uzupełnień do 2
4.1 Ujemna mnożna, dodatni mnożnik
Dla każdej jedynki w mnożniku dodaj przesuniętą mnożną. Na najmłodszej pozycji wstaw 0.
13 (NKB) 001101
7 (NKB)
000111
---------------
----------------
-13 (U1) 110010
-7 (U1) 111000
1
1
---------------
----------------
-13 (U2) 110011
-7 (U2)
111001
-13
110011
7
000111
----------------
1
11111 11
11111110011
11111100110
----------------
11111011001
1
1111 11
11111011001
11111001100
----------------
11110100101 (-91)
4.2 Dodatnia mnożna, ujemny mnożnik
4.2.1 Metoda 1
Dla każdej jedynki w mnożniku, z wyjątkiem bitu znaku, dodaj przesuniętą mnożną, przy czym na najmłodszej pozycji wstaw 0. Do najbardziej znaczącej części wyniku dodaj uzupełnienie do 1
mnożnej wraz z bitem znaku. Do N-tej pozycji iloczynu dodaj 1.
13
001101
-7
111001
----------------
1
00000001101
00001101000
----------------
00001110101
1111
00001110101
00011010000
----------------
00101000101
1
00101000101
110010
----------------
11110000101
1
----------------
11110100101
Wyznacz uzupełnienie do 2 mnożnika. Dla każdej jedynki w uzupełnionym mnożniku dodaj odpowiednio przesunięte uzupełnienie do 2 mnożnej przy czym na najmłodszej pozycji wstaw 0.
13
001101
-7
111001
----------------
110011
000111
----------------
1
11111 11
11111110011
11111100110
----------------
11111011001
1 1111 11
11111011001
11111001100
----------------
11110100101
4.3 Ujemna mnożna, ujemny mnożnik
4.3.1 Metoda 1
Dla każdej jedynki w mnożniku, z wyjątkiem bitu znaku, dodaj przesuniętą mnożną przy czym na najmłodszej pozycji wstaw 0. Do najbardziej znaczącej części wyniku dodaj uzupełnienie do 1
mnożnej. Do N-tej pozycji iloczynu dodaj 1.
-13
110011
-7
111001
----------------
1
111111
11111110011
11110011000
----------------
11110001011
1
11
11110001011
11100110000
----------------
11010111011
1
111
11010111011
001100
----------------
00000111011
1
00000111011
1
----------------
00001011011
Wyznacz uzupełnienie do 2 mnożnika. Dla każdej jedynki w uzupełnionym mnożniku dodaj odpowiednio przesunięte uzupełnienie do 2 mnożnej przy czym na najmłodszej pozycji wstaw 0.
-13
110011
-7
111001
----------------
001101
000111
----------------
11
00000001101
00000011010
----------------
00000100111
1 1
00000100111
00000110100
----------------
00001011011
Przykładowa treść zadania na laboratorium: Napisać program umożliwiający wykonanie operacji mnożenia w kodzie ZM, U1 lub U2.
Laboratorium opracowano na podstawie:
1. Bolesław Pochopień, "Arytmetyka w systemach cyfrowych", EXIT, 2004
2. Ivan Flores, "Arytmetyka maszyn cyfrowych", WNT
3. M. Morice Mano, Architektura komputerów, WNT, 1980
4. Andrew S. Tanenbaum, "Strukturalna organizacja systemów komputerowych", Helion, 2006
5. Linda Null, Julia Lobur, "Struktura organizacyjna i architektura systemów komputerowych", Helion, 2004
6. William Stallings, "Organizacja i architektura systemu komputerowego", WNT, 2003
7. J.Biernat, „Metody i układy arytmetyki komputerowej”, Oficyna Wydawnicza, Politechniki Wrocławskiej, 2001
8. J.Biernat, Arytmetyka komputerów, Warszawa, PWN, 1996
9. W. Głocki, "Układy cyfrowe", WSiP, Warszawa, 1996
10. Portal PWN. Encyklopedia, 2003
11. Encyklopedia szkolna Matematyka, WSiP, Warszawa, 1990