Для изображения как положительных, так и отрицательных чисел 8088 применяет арифметику двоичного дополнения. В такой знакопеременной арифметике самый левый бит целого числа указывает на его знак. Положительные числа имеют 0 в старшем бите, а отрицательные - 1. Положительные числа имеют одинаковое значение в знаковой и беззнаковой арифметике. У отрицательных же значение иное. Для того чтобы сделать число отрицательным, изменить его знак на минус, оно дополняется и результат увеличивается на единицу. В 4-х битовом примере 5 имеет значение 0101B, в то время как -5 равно 1011B. Пример на Фиг. 2.4 показывает этот метод.
5 = 0101B
Для изменения знака:
Дополняем 1010B
Добавляем 1 0001B
----- __________________________________
-5 = 1011B 0 = 0000B
Для изменеия знака: Для изменения знака:
Дополняем 0100B Дополняем 1111B
добавляем 1 0001B Добавляем 1 0000B
----- -----
5 = 0101B -0 = 0000B = 0
_________________________ __________________________________
Фиг. 2.4 Двоичное дополнение 5 Фиг. 2.5 То же самое с нулем
Как мы увидим позднее, процессор 8088 может работать с одним и тем же целым как со значением имеющим или не имеющим знак. Выбор оставлен программисту языка ассемблера. Во всяком случае, когда программа работает в арифметике со знаком, процессор 8088 применяет при проведении операций двоичное дополнение.
Десятичное Двоичное Десятичное Двоичное
-------------------------------------------------
7 0111 -1 1111
6 0110 -2 1110
5 0101 -3 1101
4 0100 -4 1100
3 0011 -5 1011
2 0010 -6 1010
1 0001 -7 1001 Фиг. 2.6 Числа
0 0000 -8 1000 с двоичным
------------------------------------------------- дополнением