ВУЗ:
Составители:
Рубрика:
ADD CX,1350
; CX:=<CX>+1350
ADD BYTE [1500], 2F ; M
1500
:=<M
1500
>+2F
ADD WORD [1500],20 ; M
1501
,M
1500
:=<M
1501
,M
1500
>+(-02)
Составим машинный код последней команды, используя таблицу
5 для определения вида команды и таблицу 3 (глава 3) для определения
адреса dst:
83 06 00 15 FE
КОП Адрес data
FE —это не что иное, как дополнительный код отрицательного числа:
20 (H-код). Действительно, если преобразовать -02 из прямого кода в
дополнительный, то и получим FE:
S Мантисса
-2
16
= 1 0000010
инверсия S —место знака
1 1111101
+0 0000001
1 1111110 = FE
16
Следовательно, эту же операцию можно представить так: ADD
WORD [1500],FE? Оказывается, нельзя. Поскольку не указан знак, а
любой редактор ассемблера дополняет байт или слово в части старших
бит нулями (то есть их можно не указывать), то в результате работы
транслятора для команды ADD WORD [1500],FE получится следующий
машинный код:
8306
0015 FE00
КОП Адрес data
И полный ассемблер этой команды будет таков:
ADD WORD [1500],OOFE
А это совсем другая команда.
6.2 Команда сложения с учетом переноса
Эта команда складывает не просто 2 числа, а добавляет к ним
<CF>. Это замечательная команда, потому что без нее невозможно было
бы достаточно просто складывать многобайтовые числа. Возьмем
пример для десятичных чисел:
59
+36
85 и 1 держим в уме. Единица —это перенос: CF = 1.
Естественно, что если при сложении старших чисел не учитывать
перенос от предыдущей суммы, то результат будет неверным. Чтобы 2-я
сумма была корректной, необходимо ее сложить с переносом:
8
40
ADD CX,1350 ; CX:=+1350 ADD BYTE [1500], 2F ; M1500:= +2F ADD WORD [1500],20 ; M1501,M1500:= +(-02) Составим машинный код последней команды, используя таблицу 5 для определения вида команды и таблицу 3 (глава 3) для определения адреса dst: 83 06 00 15 FE КОП Адрес data FE —это не что иное, как дополнительный код отрицательного числа: 20 (H-код). Действительно, если преобразовать -02 из прямого кода в дополнительный, то и получим FE: S Мантисса -216 = 1 0000010 инверсия S —место знака 1 1111101 +0 0000001 1 1111110 = FE16 Следовательно, эту же операцию можно представить так: ADD WORD [1500],FE? Оказывается, нельзя. Поскольку не указан знак, а любой редактор ассемблера дополняет байт или слово в части старших бит нулями (то есть их можно не указывать), то в результате работы транслятора для команды ADD WORD [1500],FE получится следующий машинный код: 8306 0015 FE00 КОП Адрес data И полный ассемблер этой команды будет таков: ADD WORD [1500],OOFE А это совсем другая команда. 6.2 Команда сложения с учетом переноса Эта команда складывает не просто 2 числа, а добавляет к ним . Это замечательная команда, потому что без нее невозможно было бы достаточно просто складывать многобайтовые числа. Возьмем пример для десятичных чисел: 59 +36 85 и 1 держим в уме. Единица —это перенос: CF = 1. Естественно, что если при сложении старших чисел не учитывать перенос от предыдущей суммы, то результат будет неверным. Чтобы 2-я сумма была корректной, необходимо ее сложить с переносом: 8 40
Страницы
- « первая
- ‹ предыдущая
- …
- 38
- 39
- 40
- 41
- 42
- …
- следующая ›
- последняя »