ВУЗ:
Составители:
Рубрика:
+<CF> от предыдущего сложения
9
Итого: 95.
Рассмотрим пример сложения многобайтовых чисел.
Пример 1 — Пусть 1-ое слагаемое находится в
M
1501
,M
1500
(двухбайтовое число), а второе слагаемое — в BX. Сумму
поместить в M
1601
,M
1600.
Ответ: Если складывать по байтам, то это будет выглядеть так:
ADD BL,[1500]; Сложить младшие байты чисел
MOV [1600],BL; и переслать младшую часть суммы в M
1600
.
ADC BH,[1501]; Сложить старшие байты слагаемых и + возмож-
MOV [1601],BH; ный перенос от предыдущей суммы и M
1601.
6.3 Операция вычитания
Эта команда выполняется чуть сложнее, чем команда сложения.
В отличие от сложения, операция вычитания простыми логическими
средствами не реализуется. Операция вычитания производится
следующим образом:
а) вычитаемое преобразуется в дополнительный код;
б) дополнительный код вычитаемого складывается с
уменьшаемым.
Само собой разумеется, что все это выполняется автоматически.
В отличие от сложения, перенос в этом случае направляется в CF через
инвертор. Посмотрим на абстрактных примерах, что из этого выходит.
Пусть A —уменьшаемое, B —вычитаемое.
Случай 1: A>B. Пусть A=1000, B=0101 (двоичные числа).
Преобразуем B в дополнительный код (без знака):
0101
инверсия
1010
+ 0001
B
доп
=1011 — дополнительный код B.
Теперь складываем: A+B
доп
:
1000
+1011
1 0011
Перенос = 1. Но этот перенос при вычитании инвертируется, и только
потом попадает в CF. Значит, в этом случае CF=0. Еще раз: 1000
2
-
0101
2
= 0011
2
и CF=0. (Кстати, результат получили в прямом коде).
Случай 2: A<B. Пусть A=0101, а B=1000. По той же технологии
преобразуем B:
41
1000
инверсия
0111
+от предыдущего сложения 9 Итого: 95. Рассмотрим пример сложения многобайтовых чисел. Пример 1— Пусть 1-ое слагаемое находится в M1501,M1500 (двухбайтовое число), а второе слагаемое — в BX. Сумму поместить в M1601,M1600. Ответ: Если складывать по байтам, то это будет выглядеть так: ADD BL,[1500]; Сложить младшие байты чисел MOV [1600],BL; и переслать младшую часть суммы в M1600. ADC BH,[1501]; Сложить старшие байты слагаемых и + возмож- MOV [1601],BH; ный перенос от предыдущей суммы и M1601. 6.3 Операция вычитания Эта команда выполняется чуть сложнее, чем команда сложения. В отличие от сложения, операция вычитания простыми логическими средствами не реализуется. Операция вычитания производится следующим образом: а) вычитаемое преобразуется в дополнительный код; б) дополнительный код вычитаемого складывается с уменьшаемым. Само собой разумеется, что все это выполняется автоматически. В отличие от сложения, перенос в этом случае направляется в CF через инвертор. Посмотрим на абстрактных примерах, что из этого выходит. Пусть A —уменьшаемое, B —вычитаемое. Случай 1: A>B. Пусть A=1000, B=0101 (двоичные числа). Преобразуем B в дополнительный код (без знака): 0101 инверсия 1010 + 0001 Bдоп=1011 — дополнительный код B. Теперь складываем: A+Bдоп: 1000 +1011 1 0011 Перенос = 1. Но этот перенос при вычитании инвертируется, и только потом попадает в CF. Значит, в этом случае CF=0. Еще раз: 10002- 01012= 00112 и CF=0. (Кстати, результат получили в прямом коде). Случай 2: A
Страницы
- « первая
- ‹ предыдущая
- …
- 39
- 40
- 41
- 42
- 43
- …
- следующая ›
- последняя »