Арифметика в дополнительном коде


Микропроцессор может использовать числа в форме дополнительного кода, потому что он в состоянии выполнять операции дополнения (инверсии), инкрементирования (добавления 1 к числу) и сложения двоичных чисел. Микропроцессор не приспособлен для прямого вычитания. Он использует сумматоры и для выполнения вычитания оперирует над дополнительным кодом.

Сложим десятичные числа +5 и +3. Рассмотрим процедуру действий в случае одновременного сложения чисел в десятичном и в дополнительном кодах:

1-е число (+5) 0000 0101

+ +

2-е число (+3) 00000011

(+8) 0000 1000

Согласно табл. 2.l0 +5=0000 0101 в дополнительном коде аналогично +3=0000 0011. Тогда числа в дополнительном коде 0000 0101 и 0000 0011 складываются, как обычные двоичные числа, давая сумму 0000 1000 в дополнительном коде, т.е. 0000 1000=+810.

Пусть надо сложить десятичные числа +7 и —3. Согласно табл. 2.10 +7 = 0000 0111 и —3 = 1111 1101 соответственно в дополнительном коде. Они затем складываются, как обычные двоичные числа, и результат 1 0000 0100 получается в дополнительном коде:

1-е число (+7) 0000 0111

+ +

2-е число (-3) 1111 1101

(+4) 1 0000 0100

Пренебречь переполнением.

Старший бит является переполнением 8-разрядного регистра, и им можно пренебречь. Получаем сумму 0000 0100 или +410.

Сложим десятичные числа +3 и —8. Согласно все той же табл. 2.10 +3=0000 0011 и —8=1111 1000. Их дополнительные коды 0000 0011 и 1111 1000 складываются, как обычные двоичные числа, что дает 1111 1011=—510:
1-е число (+3) 0000 0011

+ +

(-8) 1111 1000

2-е число (—5) 1111 1011

Сложим десятичные числа —2 и —5. В дополнительном коде согласно табл. 2.10—2=1111 1110 и—5=1111 1011. Два числа 1111 1110.и 1111 1011 складываются, как обычные десятичные числа, что дает 1 1111 1001:

1-е число (-2) 1111 1110

+ +

2-е число (-5) 1111 1011

(-7) 1 1111 1001

Пренебречь переполнением.

Старший бит результата является переполнением 8-разрядного регистра, и им пренебрегаем. Таким образом, суммой двух чисел 1111 1110 и 1111 1011 в дополнительном коде будет 1111 1001. Согласно табл. 2.10 сумма 1111 1001=—710.

Вычтем теперь десятичное число +5 из десятичного числа +8. Первое число +8=0000 1000, второе +5=0000 0101. В дополнительный код (инвертировать и добавить 1) должно быть преобразовано число 00000101, что дает 1111 1011. Затем первое число 0000 1000 складывается с дополнительным кодом второго 1111 1011, как с обычным двоичным числом, что дает 1 0000 0011:

1-е число (+8) 0000 1000

— Дополнительный код
2-е число (+5) ------------------- _ 1111 1011

(+3) 1 0000 0011

Пренебречь переполнением.

Старший бит является переполнением регистра, им пренебрегаем, что дает результат 0000 0011 = +310. Заметим, что второе число было представлено в дополнительном коде, затем сложено с первым. Используя дополнительный код и сумматор, микропроцессор выполняет вычитание.

Вычтем теперь большее десятичное число +6 из десятичного числа +2:

1-е число (+2) _ 0000 0010

- Дополнительный код +

2-е число (+6)=00000110 1111 1010

(—4) 1111 1100

Дополнительный код первого числа +2=0000 0010, второе число +6=0000 0110, его дополнительный код (инверсия и добавление 1)—1111 1010. Оба эти кода сложены затем, как обычные двоичные числа, что дает 1111 1100, а согласно табл. 2.10 1111 1100 =—410.

Упражнения

2.38. Сложить следующие десятичные числа со знаком, используя метод дополнительного кода:

а) (+7) + (+1) б) (+31) + (+26)

2.39. Сложить следующие десятичные числа со знаком, используя метод дополнительного кода:

а) (+8) + (-5) б) (+89) + (-46).

2.40. Сложить следующие десятичные числа со знаком, используя метод дополнительного кода:

а) (+1) + (-6) б) (+20) + (-60).

2.41. Сложить следующие десятичные числа со знаком, используя метод дополнительного кода:

a) (-3) + (-4) б) (-13) + (-41).

2.42. Вычесть следующие десятичные числа со знаком, используя метод дополнительного кода:

а) (+7) - (+2) б) (+113) - (+50).

2.43. Вычесть следующие десятичные числа со знаком, используя метод дополнительного кода:

а) (+3) - (+8) б) (+12) - (+63).

Решения

2.38. Следовать процедуре, приведенной в § 2.7:

а) (+7) 0000 0111 б) (+31) 0001 1111

(+1) 0000 0001 (+26) 0001 1010

(+8) 0000 1000 (доп. код); (+57) 0011 1001(доп. код).

2.39.Следовать процедуре, приведенной в § 2.7:

а) (+8) 0000 1000 б) (+89) 0101 1001
+ + + +

(-5) 1111 101 (-46) 1101 0010

(+3) 10000 0011 (доп. код); (+43) 10010 1011(доп. код).

Пренебречь переполнением. Пренебречь переполнением.

2.40.Следовать процедуре, приведенной в § 2.7:

а) (+1) 0000 0001 б) (+20) 0001 0100

(—6) 1111 1010 (—60) 1100 0100

(—5) 1111 1011 (доп. код); (—40) 1101 1000(доп. код).

2.41. Следовать процедуре, приведенной в § 2.7:

а) (-3) 1111 1101 б) (—13) 1111 0100

+ +

(-4) 1111 1100 (—41) 1101 0111

(—7) 11111 1001(доп.код); (—54) 11100 1010(доп. код).

Пренебречь переполнением. Пренебречь переполнением.

2.42. Следовать процедуре, приведенной в § 2.7:

б) (+7) 0000 0111

дополнительный +

(+2) = 0000 0010--------------------- 11111110

———код и сложить --

(+5) 10000 1110(доп. код).

Пренебречь•переполнением.

б) (+113) 0111 0001

+ дополнительный +

(+50) = 0011 0010---------------------- 11001110

код и сложить -

10011 1110(доп.код)

Пренебречь переполнением,

2.43. Следовать процедуре, приведенной в § 2.7:

а) (+3) 0000 0011

- +

(+8) = 0000 1000 дополнительный 1111 1000

— код и сложить 1111 1011(доп.код);

б) (+12) 0000 1100

(+63) = 0011 1111 дополнительный+1100 0001

(-51) код и сложить 1100 1101(доп.код).


 

Лекция 9



Дата добавления: 2016-07-05; просмотров: 4585;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.012 сек.