Целочислена аритметика�Аритметични операции с цели двоични числа�
ФМИ Компютърни архитектури – практикум
Лекция 7
Изготвила:
Десислава Тодорова
Съдържание
Какво е двоично число?
Какво е двоично число?
Размерност на данните | Цяло без знак | Цяло със знак |
байт | 0...255 | –128...+127 |
дума | 0...65 535 | –32 768...+32 767 |
двойна дума | 0...4 294 967 295 | –2 147 483 648...+2 147 483 647 |
Операции с двоични числа
Събиране на двоични числа без знак
Събиране на двоични числа със знак
Събиране на двоични числа�(Команди)
Изваждане на двоични числа без знак и със знак
Ако умаляемото е по-голямо от умалителя — разликата е положително число, резултатът е верен. Ако умаляемото е по-малко от умалителя, възниква проблем: резултатът е отрицателен, а това е вече число със знак. Микропроцесорът заема единица от разряда, следващ след старшия, в разрядната решетка на операнда.
Основавайки се на Пример 6 може да твърдим , че микропроцесорът няма нужда от две устройства: за събиране и изваждане, достатъчно е само едно.
Изваждане на двоични числа (Команди)
Умножение на числа без знак (1)
mul множител_1
множител_1 | множител_2 | Резултат |
Байт | al | 16 бита в ax: �al — младшата част на резултата; �ah — старшата част на резултата |
Дума | ax | 32 бита в dx:ax: �ax — младшата част на резултата; �dx — старшата част на резултата |
Двойна дума | eax | 64 бита в edx:eax: �eax — младшата част на резултата; �edx — старшата част на резултата |
Умножение на числа без знак (2)
Умножение на числа със знак
imul операнд_1
част е значещ бит на двоичния код на резултата.
Деление на числа без знак (1)
div делител
Деление на числа без знак (2)
Делимо | Делител | Частно | Остатък |
16 бита �в регистър ax | Байт �регистър или клетка от паметта | Байт �в регистър al | Байт �в регистър ah |
32 бита �dx — старшата част �ax — младшата част | Дума 16 бита �регистър или клетка от паметта | Дума 16 бита в �регистър ax | Дума 16 бита в �регистър dx |
64 бита �edx — старшата част �eax — младшата част | Двойна дума 32 бита �регистър или клетка от паметта | Двойна дума �32 бита в �регистър eax | Двойна дума �32 бита в �регистър edx |
Деление на числа без знак (3)
стойността на делимото е по-голяма 4 294 967 296
пъти от стойността на делителя.
Деление на числа със знак (1)
idiv делител
Деление на числа със знак (2)
диапазона от –2 147 483 648 до +2 147 483 647).
Спомогателни команди за целочислени операции (1)
(в регистрите edx:eax) като разпространява стойността
на старшия бит на eax на всички битове на регистър edx.
Спомогателни команди за целочислени операции (2)
аритметични действия.
Спомогателни команди за целочислени операции (3)
помощта на две команди:
?
Може да задавате Вашите
въпроси в
Общия форум на курса.
Благодаря за вниманието!
Събиране на двоични числа без знак- Пример 0
254 = 11111110
+
005 = 0000101
=
259 = 1 00000011.
Събиране на двоични числа със знак- Пример 1
30566 = 01110111 01100110
+
00687 = 00000010 10101111
=
31253 = 01111010 00010101
НАПРЕД
Събиране на двоични числа със знак- Пример 2
30566 = 01110111 01100110
+
30566 = 01110111 01100110
=
61132 = 11101110 11001100
НАПРЕД
Събиране на двоични числа със знак- Пример 3
- 30566 = 10001000 10011010
+
- 04875 = 11101100 11110101
=
- 35441 = 01110101 10001111
НАПРЕД
Събиране на двоични числа със знак- Пример 4
- 4875 = 11101100 11110101
+
- 4875 = 11101100 11110101
=
- 9750 = 11011001 11101010
• от 14-тия разряд (за положителни числа със знак);
• от 15-тия разряд (за отрицателни числа).
Изваждане на двоични числа - Пример 5
05 = 00000000 00000101
-10 = 00000000 00001010
100000000 00000101
-
00000000 00001010
=
11111111 11111011
(65 536 + 5) — 10 = 65 531, 0 тук е еквивалент на числото 65 536. Резултатът е неверен, но микропроцесорът счита, че проблеми няма и факта на заем на единица той фиксира с установяване на флага за пренос CF. Получихме резултат –5 в допълнителен код.
НАПРЕД
Изваждане на двоични числа - Пример 6
5 = 00000000 00000101
+
(-10)= 11111111 11110110
=
11111111 11111011
Изваждане на двоични числа - Пример 7
45 = 0010 1101
-
-127 = 1000 0001
=
-44 = 1010 1100
НАПРЕД
Изваждане на двоични числа - Пример 8
-45 — 45 = -45 + (-45)= -90.
-45 = 1101 0011
+
-45 = 1101 0011
=
-90 = 1010 0110