УМНОЖЕНИЕ ЦЕЛЫХ ЧИСЕЛ В ЭВМ.
ВЫПОЛНЕНИЕ СЛОЖЕНИЯ В ЭВМ
Значение А заносится в регистр Рг1 с помощью команды MOV Рг1, А (где вместо Рг1 указывается имя конкретного регистра процессора, например ах, вх и др.).
Сложение значений, которые хранятся в двух регистрах Рг1 и Рг2 выполняется на сумматоре с помощью команды ADD Рг1, Рг2.
Фрагмент программы, выполняющий сложение двух чисел w = x + y на машинном языке, называемом Ассемблер, будет иметь следующий вид:
mov ax,x
mov dx,y
add dx,ax
mov w,dx
где ax, dx - регистры микропроцессора.
УМНОЖЕНИЕ ЦЕЛЫХ ЧИСЕЛ В ЭВМ.
В основе операции умножения лежит операция сдвига и сложения.
Умножение чисел производится в прямом и дополнительном кодах по следующим правилам:
1. При умножении чисел в прямых кодах:
1.1. Знаковые и информационные разряды обрабатываются раздельно. Для определения знака результата производится суммирование цифр, записанных в знаковых разрядах операндов.
1.2.Умножение чисел производится путем пошагового сложения сдвигаемого значения множимого и частичной суммы при наличии ненулевого бита соответствующего разряда множителя.
2. При умножении чисел в дополнительном коде:
2.1.Знак результата получается автоматически.
2.2.Умножение чисел производится путем пошагового сложения сдвигаемого значения множимого и частичной суммы при наличии ненулевого бита соответствующего разряда множителя.
2.3. Если множитель является отрицательным числом, то необходима коррекция результата. Для коррекции результата, при умножении множимого А на знаковую единицу множителя В необходимо просуммировать не А, а [–А].
2.4. Если множимое является отрицательным числом, то в сложении участвуют 1, которые получены за счет дописывания слева перед множимым незначащих нулей, и последующей их инверсией.
Умножение можно выполнять начиная с младших разрядов множителя либо со старших. При этом можно сдвигать сумму частичных произведений либо множимое. Наиболее простой по аппаратурным затратам является схема умножение с младших разрядов множителя со сдвигом суммы частичных произведений.
Операция умножения в ЭВМ выполняется на устройствах, имеющих название умножители (или матричные умножители). В состав умножителя входят регистры, сумматоры, счетчики устройства сравнения и схемы управления.
В упрощенном виде алгоритм умножения может быть описан следующим образом.
1. Занести в Регистр множимое х и множитель у (mov ax,x; mov dx,y). Если умножение будет производится в дополнительном коде, то представить содержимое регистром в дополнительном коде
2. Регистр суммы обнулить (mov вx,#0).
3. Переменной і, подсчитывающей количество умножений, присвоить значение 0.
4. Если dx[0] = 1, то выполнить сложение add bx, ax.
5. SHL ax,1
6. i = i + 1
7. Если i<N, то перейти к п.4 иначе закончить умножение.
Пункты 4-7 алгоритма могут быть заменены одной ассемблерной командой
MUL ax,dx.
Пример 1. А=8, В=6. Выполнить операцию умножения в прямом коде.
Знак 0+0=0
110
1000
11000 = 48
.
Пример 2. Умножить А * В в дополнительном коде
А10=4 А2=100 [ А]дк = 0 100 В10=7 В2=111 [ В]дк = 1 111
0 100
0 111
0 100
0 100
0 100
0 000
0 11100 = 16+8+4=2810
Пример 3.
А=10 В=13 Умножить А*В, А*(-В),
- А2=1010 [ А]дк = 0 1010 [- А]дк = 1 0110
- В2=1101 [ В]дк = 0 1101 [- В]дк = 1 0011
01101
00000
0 10000010=128+2=130
10011
10110
101111110 = 1 1000001+1=
= 1 0000010 =128+2 = 13010
Пример 4. Умножить А * ( -В), (- А )*(-В)
А10=2 А2=010 [ А]дк = 0 010 [ -А]дк = 1 110
В10=5 В2=101 [ В]дк = 0 101 [ В]дк = 1 011
1011
1110
1110110 = 1001001+1=1001010=-1010
1011
1111110
111110
00000
0010
0001010 = 1010
<== предыдущая лекция | | | следующая лекция ==> |
| | Деление чисел в машинах с плавающей запятой. |
Дата добавления: 2016-10-17; просмотров: 3673;