Рубрики

Режимы адресации

Режимы адресации . Термин «режимы адресации» относится к способу указания операнда команды. Режим адресации определяет правило для интерпретации или изменения поля адреса инструкции до того, как операнд будет фактически выполнен.

Режимы адресации для инструкций 8086 делятся на две категории:

1) Режимы адресации для данных

2) Режимы адресации для филиала

Режимы адресации памяти 8086 обеспечивают гибкий доступ к памяти, позволяя легко получать доступ к переменным, массивам, записям, указателям и другим сложным типам данных. Ключ к хорошему программированию на ассемблере — правильное использование режимов адресации памяти.

Инструкция на ассемблере состоит из двух частей

Адрес памяти операнда состоит из двух компонентов:  

ВАЖНЫЕ УСЛОВИЯ

  • Начальный адрес сегмента памяти.
  • Действующий адрес или смещение . Смещение определяется путем добавления любой комбинации трех элементов адреса: смещения, базы и индекса.
    • Смещение: это 8-битное или 16-битное непосредственное значение, указанное в инструкции.
    • База : содержимое регистра базы, BX или BP.
    • Индекс : содержимое регистра индекса SI или DI.

Согласно различным способам указания операнда микропроцессором 8086, разные режимы адресации используются 8086.

Режимы адресации, используемые микропроцессором 8086, обсуждаются ниже:

  • Подразумеваемый режим:: При подразумеваемой адресации операнд указывается в самой инструкции. В этом режиме данные имеют длину 8 или 16 бит, и данные являются частью инструкции. Инструкции с нулевым адресом разработаны в режиме неявной адресации.
    Example:  CLC (used to reset Carry flag to 0)
  • Режим немедленной адресации (символ #): в этом режиме данные присутствуют в поле адреса инструкции. Задано как один формат инструкции адреса.
    Примечание: ограничение в непосредственном режиме состоит в том, что диапазон констант ограничен размером поля адреса.
    Example:  MOV AL, 35H (move the data 35H into AL register)
  • Режим регистров: при адресации регистров операнд помещается в один из 8-битных или 16-битных регистров общего назначения. Данные находятся в регистре, указанном инструкцией.
    Здесь одна ссылка на регистр требуется для доступа к данным.

    Example: MOV AX,CX (move the contents of CX register to AX register)
  • Косвенный режим регистров : при этой адресации смещение операнда помещается в любой из регистров BX, BP, SI, DI, как указано в инструкции. Действующий адрес данных находится в базовом регистре или регистре индекса, который указан инструкцией.
    Здесь две ссылки на регистр требуются для доступа к данным.

    Процессоры 8086 позволяют косвенно обращаться к памяти через регистр, используя режимы косвенной адресации регистра.

    MOV AX, [BX](move the contents of memory location s 
    addressed by the register BX to the register AX)
  • Auto Indexed (инкрементный режим) : действующим адресом операнда является содержимое регистра, указанного в инструкции. После доступа к операнду содержимое этого регистра автоматически увеличивается, чтобы указывать на следующую последовательную ячейку памяти. (R1) + .
    Здесь одна ссылка на регистр, одна ссылка на память и одна операция ALU требуются для доступа к данным.
    Пример:
    Add R1, (R2)+  // OR
    R1 = R1 +M[R2]
    R2 = R2 + d 

    Полезно для обхода массивов в цикле. R2 — начало массива d — размер элемента

  • Автоматическое индексирование (декрементный режим) : действующим адресом операнда является содержимое регистра, указанного в инструкции. Перед доступом к операнду содержимое этого регистра автоматически уменьшается, чтобы указывать на предыдущую последовательную ячейку памяти. (R1)
    Здесь одна ссылка на регистр, одна ссылка на память и одна операция ALU требуются для доступа к данным.
  • Пример:

Add R1,-(R2)   //OR
R2 = R2-d
R1 = R1 + M[R2] 

Режим автоматического уменьшения аналогичен режиму автоматического увеличения. Оба могут также использоваться для реализации стека как push и pop. Режимы автоматического увеличения и автоматического уменьшения полезны для реализации структур данных «последний пришел-первый вышел».

  • Режим прямой адресации / абсолютной адресации (символ []): смещение операнда задается в инструкции как элемент смещения 8 или 16 бит. В этом режиме адресации 16-битный эффективный адрес данных является частью инструкции.
    Здесь только одна операция с памятью требуется для доступа к данным.

     Пример: ADD AL, [0301] // добавляем содержимое адреса смещения 0301 в AL 
  • Режим косвенной адресации (символ @ или ()) : в этом режиме поле адреса содержит адрес действующего адреса. Здесь требуются две ссылки.
    1-я ссылка для получения эффективного адреса.
    2-я ссылка для доступа к данным.

    В зависимости от наличия эффективного адреса, косвенный режим бывает двух видов:

    1. Регистр косвенный: в этом режиме эффективный адрес находится в регистре, и соответствующее имя регистра будет сохранено в поле адреса инструкции.
      Здесь одна ссылка на регистр, одна ссылка на память требуется для доступа к данным.
    2. Память косвенная: в этом режиме эффективный адрес находится в памяти, и соответствующий адрес памяти будет сохраняться в поле адреса инструкции.
      Здесь две ссылки на память требуются для доступа к данным.
  • Режим индексированной адресации : смещение операнда является суммой содержимого индексного регистра SI или DI и смещения 8 или 16 бит.
    Example:MOV AX, [SI +05] 
  • Основанная индексированная адресация: Смещение операнда является суммой содержимого базового регистра BX или BP и индексного регистра SI или DI.
    Example: ADD AX, [BX+SI] 
  • Основываясь на передаче управления, режимы адресации:

    • Режим относительной адресации ПК : режим относительной адресации ПК используется для реализации внутрисегментной передачи управления. В этом режиме эффективный адрес получается путем добавления смещения к ПК.
      EA= PC + Address field value
      PC= PC + Relative value.
    • Режим адресации базового регистра: Режим адресации базового регистра используется для реализации межсегментной передачи управления. В этом режиме эффективный адрес получается путем добавления значения базового регистра к значению поля адреса.
      EA= Base register + Address field value.
      PC= Base register + Relative value.
      

      Замечания:

      1. Относительный регистр на базе ПК. Оба режима адресации подходят для перемещения программы во время выполнения.
      2. Основанный на режиме адресации регистр лучше всего подходит для записи независимых от позиции кодов.

    Преимущества режимов адресации

    1. Предоставить программистам такие средства, как указатели, счетчики для управления циклами, индексирование данных и перемещение программ.
    2. Уменьшить количество бит в поле адресации Инструкции.

    Образец вопроса GATE

    Сопоставьте каждое из утверждений языка высокого уровня, приведенных слева, с наиболее естественным режимом адресации из перечисленных справа.

    1. A[1] = B[J];         a. Indirect addressing
    2. while [*A++];        b. Indexed  addressing
    3. int temp = *x;       c. Autoincrement

    ) (1, в), (2, б), (3, а)
    (B) (1, a), (2, c), (3, b)
    (С) (1, б), (2, в), (3, а)
    (D) (1, а), (2, б), (3, в)

    Ответ: (с)

    Объяснение:

    List 1                           List 2
    1) A[1] = B[J];      b) Index addressing 
    Here indexing is used
    
    2) while [*A++];     c) auto increment
    The memory locations are automatically incremented
    
    3) int temp = *x;    a) Indirect addressing
    Here temp is assigned the value of int type stored
    at the address contained in X

    Следовательно, (C) является правильным решением.

    Эта статья предоставлена Пуджей Танеджа. Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

    Рекомендуемые посты:

    Режимы адресации

    0.00 (0%) 0 votes