Архитектура микропроцессорной системы. Состав машинных команд и основы программирования микропроцессорной системы на ассемблере. Булатов В.Н. - 40 стр.

UptoLike

Составители: 

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