Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Абель.docx
Скачиваний:
13
Добавлен:
26.11.2018
Размер:
569.84 Кб
Скачать

64, Т.Е. 65. Но 01000001 представляет также букву a! Действительно, здесь

момент, который необходимо четко уяснить. Биты 01000001 могут представлять

как число 65, так и букву A:

- если программа определяет элемент данных для арифметических

целей, то 01000001 представляет двоичное число эквивалентное

десятичному числу 65;

- если программа определяет элемент данных (один или более

смежных байт), имея в виду описательный характер, как, например,

заголовок, тогда 01000001 представляет собой букву или "строку".

При програмировании это различие становится понятным, так как

назначение каждого элемента данных определено.

Двоичное число неограничено только восемью битами. Так как процессор

8088 Использует 16-битовую архитектуру, oн автоматически оперирует с

16-битовыми числами. 2 в степени 16 минус 1 дает значение 65535, а немного

творческого программирования позволит обрабатывать числа до 32 бит (2 в

степени 32 минус 1 равно 4294967295) и даже больше.

Двоичная арифметика

---------------------

Микрокомпьютер выполняет арифметические действия только в двоичном

формате. Поэтому программист на языке ассемблера должен быть знаком с

двоичным форматом и двоичным сложением:

0 + 0 = 0

1 + 0 = 1

1 + 1 = 10

1 + 1 + 1 = 11

Обратное внимание на перенос единичного бита в последних двух

операциях. Теперь, давайте сложим 01000001 и 00101010. Букву A и символ *?

Нет, число 65 и число 42:

Двоичные Десятичные

01000001 65

00101010 42

-------- ---

01101011 107

Проверьте, что двоичная сумма 01101011 действительно равна 107.

Рассмотрим другой пример:

Двоичные Десятичные

00111100 60

00110101 53

-------- ---

01110001 113

Отрицательные числа

---------------------

Все представленные выше двоичные числа имеют положительные значения,

что обозначается нулевым значением самого левого (старшего) разряда.

Отрицательные двоичные числа содержат единичный бит в старшем разряде и

выражаются двоичным дополнением. Т.е., для представления отрицательного

двоичного числа необходимо инвертировать все биты и прибавить 1.

Рассмотрим пример:

Число 65: 01000001

Инверсия: 10111110

Плюс 1: 10111111 (равно -65)

Если прибавить единичные значения к числу 10111111, 65 не получится.

Фактически двоичное число считается отрицательным, если его старший бит

равен 1. Для определения абсолютного значения отрицательного двоичного

числа, необходимо повторить предыдущие операции: инвертировать все биты и

прибавить 1:

Двоичное значение: 10111111

Инверсия: 01000000

Плюс 1: 01000001 (равно +65)

Сумма +65 и -65 должна составить ноль:

01000001 (+65)

10111111 (-65)

--------

(1) 00000000

Все восемь бит имеют нулевое значение. Перенос единичного бита влево

потерян. Однако, если был перенос в знаковый pазряд и из разрядной сетки,

то результат является корректным.

Двоичное вычитание выполняется просто: инвертируется знак вычитаемого

и складываются два числа. Вычтем, например, 42 из 65. Двоичное

представление для 42 есть 00101010, и eго двоичное дополнение: - 11010110:

65 01000001

+(-42) 11010110

----- --------

23 (1) 00010111

Результат 23 является корректным. В рассмотренном примере произошел

перенос в знаковый разряд и из разрядной сетки.

Если справедливость двоичного дополнения не сразу понятна, рассмотрим

следующие задачи: Какое значение необходимо прибавить к двоичному числу