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

UptoLike

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

2) Смещение:
Смещение (disp) вычисляем относительно текущего значения
адреса (содержимого IP после выборки команды), учитывая что команда
JNBE (JA) — двухбайтовая. Текущее значение адреса: IP= 0100 + 2 =
0102. Ищем разность между конечным и текущим адресом: (0092 —
0102) = -0070. Берем только младший байт -70 и преобразуем это
отрицательное число из прямого кода в дополнительный (D7 —знак):
Прямой Обратный Дополнительный
S S S (S —знаковый бит)
1.1110000
2
1.0001111
2
1.0010000
2
= 90
16
.
Окончательно:
Address Command Assembler
0100 77 JNBE 0092
0101 90
Пример 3 – тоже самое, что и в примере 1, только перейти на
адрес 182.
Ответ:
Вычислим смещение: 182 —102 = 80
16
= 128
10
> 127
10
-
неосуществимо! Перебор на 1 адрес, так как максимальное смещение в
этом случае может быть только 127
10
= 7F
16
.
7.2 Команды перехода
Кроме команд типа JUMP с условным переходом (ветвления) есть
и команды с безусловным переходом, которые позволяют «прыгать» не
только в пределах ±7F, но и даже между сегментами. Рассмотрим их.
JMP — команда с безусловным переходом (пять типов)
1) Короткая, с относительной адресацией (смещением), 2-х
байтовая; максимальная величина disp = ±7F.
а) ассемблер: JMP SHORT Addr;
б) КОП = ЕВ.
Пример 4 Команда расположена на 0100 адресе. Прыгнуть на
адрес 0105.
Определяем текущее значение IP: IP = 0100 + 2 = 0102.
Смещение: 0105 —0102 = 0003 = 03 (1 байт).
50
        2) Смещение:
     Смещение (disp) вычисляем относительно текущего значения
адреса (содержимого IP после выборки команды), учитывая что команда
JNBE (JA) — двухбайтовая. Текущее значение адреса: IP= 0100 + 2 =
0102. Ищем разность между конечным и текущим адресом: (0092 —
0102) = -0070. Берем только младший байт -70 и преобразуем это
отрицательное число из прямого кода в дополнительный (D7 —знак):

    Прямой       Обратный     Дополнительный
    S            S            S                  (S —знаковый бит)
    1.11100002   1.00011112   1.00100002 = 9016.
Окончательно:

               Address    Command         Assembler
                0100         77          JNBE 0092
                0101         90

     Пример 3 – тоже самое, что и в примере 1, только перейти на
адрес 182.
     Ответ:
     Вычислим смещение: 182 —102 = 8016 = 12810 > 12710 -
неосуществимо! Перебор на 1 адрес, так как максимальное смещение в
этом случае может быть только 12710 = 7F16.

7.2 Команды перехода
     Кроме команд типа JUMP с условным переходом (ветвления) есть
и команды с безусловным переходом, которые позволяют «прыгать» не
только в пределах ±7F, но и даже между сегментами. Рассмотрим их.
     JMP — команда с безусловным переходом (пять типов)
     1) Короткая, с относительной адресацией (смещением), 2-х
байтовая; максимальная величина disp = ±7F.
           а) ассемблер: JMP SHORT Addr;
           б) КОП = ЕВ.
           Пример 4 — Команда расположена на 0100 адресе. Прыгнуть на
     адрес 0105.
     Определяем текущее значение IP: IP = 0100 + 2 = 0102.
Смещение: 0105 —0102 = 0003 = 03 (1 байт).


50