Арифметические операции над целыми числами.

Представление целых чисел.

Числа бывают беззнаковые и знаковые.

В n-разрядной двоичной сетке для модуля беззнаковых чисел отводятся все n разрядов. При этом диапазон чисел составляет от 0 до 2n-1.

В случае знаковых чисел старший разряд отводится под знак (1 – «-», 0 – «+»), а остальные разряды – под модуль. Т.о., диапазон чисел составляет от +(2n-1 – 1) до -(2n-1- 1).

 

В процессоре знаковые числа представляются в дополнительном коде.

Дополнительный код положительного числа, есть само число.

Дополнительный код отрицательного числа образуется по правилу: символ младшего разряда вычитается из числа, равного основанию системы счисления, а символы остальных разрядов – из числа, на 1 меньшего основания системы счисления.

Примеры при n = 8: -510 = -0000 01012 в прямом двоичном коде;

-510 = 1111 10112 в дополнительном коде.

-7Е16 = 8216 в дополнительном коде.

1. Сложение:

а) производится поразрядно, начиная с младших разрядов;

б) если сумма Si чисел i-го разряда превышает или равна ОСС, то в этот разряд результата записывается разность (Si – k×ОСС), а в следующий, более старший разряд (включая и знаковый), переносится k в виде дополнительного слагаемого. Здесь k – целая часть от деления Si на ОСС.

Например, в случае двоичной системы счисления и Si = 5, k = [5/2] = 2. Следовательно, в i-й разряд результата запишется 5-k×2 = 5-4 = 1, а в следующий разряд переносится (говорим «в уме») дополнительное слагаемое 2 (k = 2);

в) в случае знаковых чисел перенос из знакового разряда не производится.

Примеры: числа без знака знаковые числа

 

Возможно переполнение Переполнения нет

-5+7 -5516+516

Результат операции над знаковыми числами представлен в прямом коде, если он положительный и в дополнительном коде, если отрицательный.

 

2. Вычитание заменяется сложением чисел, предварительно представленных в дополнительном коде.

Примеры при n = 4:

616-316 = 616+D16 = 316 (перенос из знакового разряда не производится);

316-616 = 31616 = D16 (дополнительный код числа -3);

-616-316 = A16+D16 = 1716 (переполнение разрядной сетки).

 

3. Умножение для положительных чисел выполняется обычным образом, а для отрицательных – с промежуточным преобразованием в прямой код.

 

Примеры: а). Числа без знака:

x
5Е (Е×2=28 28:16=1, остаток 12; С пишем, 1 в «уме»)

А2 (5×2=10 10+1=11)

+
BC (Е×А=140 140:16=8, остаток 12; С пишем, 8 в «уме»)

3AC (5×А=50 (50+8):16=3, остаток 10; А пишем, 3 в «уме»)

3B 7C

б). Знаковые числа: 52 ´ AE = 52 ´ (-52) = -1A44h = E5BC.

 

4.2. Методы адресации операндов

 

Адресация – обращение к операнду, указание на который содержится в команде.

Адресный код (АК)– это информация об адресе операнда, содержащаяся в команде.

Исполнительный адрес (АИ) – это номер физической ячейки памяти, к которой производится обращение.

Первая группа адресаций устанавливает АИ по значению АК.

Непосредственная адресация – операнд указывается в команде константой. Эта адресация используется для ввода исходных данных и при работе с различного рода константами.

Прямая адресация – АИ совпадает с АК.

Регистровая адресация – в команде указывается имя регистра РОН процессора, в котором хранится операнд.

Косвенная адресация – АК указывает имя регистра процессора, в котором находится АИ. Такой регистр называют регистром адреса.

 

 


Автоинкрементная (автодекрементная) адресация – в команде указывается имя регистра процессора, содержимое которого автоматически увеличивается (уменьшается) на 1.