Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Режимы адресации и форматы команд 16-разрядного микропроцессора






Данный микропроцессор имеет двухадресную систему команд [6, 8]. Ее особенностью является отсутствие команд, использующих оба операнда из оперативной памяти. Ис­ключение составляют лишь команды пересылки и сравнения цепочек байт или слов, которые в данном пособии рассматриваться не будут. Таким образом, в командах допустимы следующие сочетания операндов: RR, RS, RI, SI. Здесь R обозначает операнд, находящийся в одном из регистров регистровой памяти, S – операнд, находящийся в оперативной памяти, адрес которого формируется по одному из допустимых способов адресации, I – непосредственный операнд, находящийся в самой команде. Формат команды определяется способом адресации операнда, находящего в оперативной памяти, длиной используемого непосредственного операнда, а также наличием и длиной смещения, используемого при относительных режимах адресации.

Микропроцессор имеет все режимы адресации, общая схема которых была рассмотрена выше. Естественно, они имеют определенные особенности, присущие данному процессору.

Непосредственная адресация предполагает, что операнд занимает одно из полей команды и, следовательно, выбирается из оперативной памяти одновременно с ней. В зависимости от форматов обрабатываемых процессором данных непосредственный операнд может иметь длину 8 или 16 бит, что в дальнейшем будем обозначать data 8 и data 16 соответственно.

Механизмы адресации операндов, находящихся в регистровой памяти и в оперативной памяти, существенно различаются. К регистровой памяти допускается лишь прямая регистровая адресация. При этом в команде указывается номер регистра, содержащего операнд. 16-раз­рядный операнд может находиться в регистрах AX, BX, CX, DX, DI, SI, SP, BP, а 8-разрядный – в регистрах AL, AH, BL, BH, CL, CH, DL, DH.

Адресация оперативной памяти имеет свои особенности, связанные с ее разбиением на сегменты и использованием сегментной группы регистров для указания начального адреса сегмента. 16-раз­ряд­ный адрес, получаемый в блоке формирования адреса операнда на основе указанного режима адресации, называется эффективным адресом (ЭА). Иногда эффективный адрес часто обозначается как ЕА (effective adress). 20-разрядный адрес, который получается сложением эффективного адреса и увеличенного в 16 раз значения соответствующего сегментного регистра, называется физическим адресом (ФА).

Именно физический адрес передается из микропроцессора по 20-ти адресным линиям, входящим в состав системной шины, в оперативную память и используется при обращении к ее ячейке на физическом уровне. При получении эффективного адреса могут использоваться все основные режимы адресации, рассмотренные выше, а также некоторые их комбинации.

Прямая адресация предполагает, что эффективный адрес является частью команды. Так как ЭА состоит из 16 разрядов, то и соответствующее поле команды должно иметь такую же длину.

 
 

При регистровой косвенной адресации эффективный адрес операнда находится в базовом регистре BX или одном из индексных регистров DI или SI:

Обозначение имени регистра в квадратных скобках указывает на содержимое соответствующего регистра. Фигурные скобки – символ выбора одной из нескольких возможных альтернатив.

 
 

При регистровой относительной адресации эффективный адрес равен сумме содержимого базового или индексного регистра и смещения:

Обозначение disp 8 и disp 16 здесь и далее указывают на 8- или 16-разрядное смещение соот­ветственно.

Эффективный адрес при базово-индексной адресации равен сумме содержимого базового и индексного регистров, определяемых командой:

 
 

Наиболее сложен механизм относительной базово-индексной адресации.

 
 

Эффективный адрес в этом случае равен сумме 8- или 16-разрядного смещения и базово-индексного адреса:

 
 

Форматы двухоперандных команд представлены на рис.4.3. Пунктиром показаны поля, которые в зависимости от режима адресации могут отсутствовать в команде.

Поле коп содержит код выполняемой операции. Признак w указывает на длину операндов. При w =1 операция проводится над словами, а при w = 0 – над байтами.

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

Поля md и r/m задают режим адресации второго операнда согласно табл.4.2.


Таблица 4.1

reg Регистр
w =1 w =0
  AX AL
  CX CL
  DX DL
  BX BL
  SP AH
  BP CH
  SI DH
  DI BH

 

Таблица 4.2

r/m md
       
w =1 w =0
  (BX)+(SI) (DS) (BX)+(SI)+disp 8 (DS) (BX)+(SI)+disp 16 (DS) AX AL
  (BX)+(DI) (DS) (BX)+(DI)+disp 8 (DS) (BX)+(DI)+disp 16 (DS) CX CL
  (BP)+(SI) (SS) (BP)+(SI)+disp 8 (SS) (BP)+(SI)+disp 16 (SS) DX DL
  (BP)+(DI) (SS) (BP)+(DI)+disp 8 (SS) (BP)+(DI)+disp 16 (SS) BX BL
  (SI) (DS) (SI)+disp 8 (DS) (SI)+disp 16 (DS) SP AH
  (DI) (DS) (DI)+disp 8 (DS) (DI)+disp 16 (DS) BP CH
  disp16 (DS) (BP)+disp 8 (SS) (BP)+disp 16 (SS) SI DH
  (BX) (DS) (BX)+disp 8 (DS) (BX)+disp 16 (DS) DI BH

 

В табл.4.2 помимо определения режима адресации оперативной памяти указан также сегментный регистр, используемый по умолчанию для получения физического адреса. Использование другого сегментного регистра возможно введением специального префикса (дополнительного байта, который записывается перед командой).

В командах, использующих непосредственный операнд, признак s вместе с признаком w оп­ре­деляет разрядность непосредственного операнда, записываемого в команде, и разрядность выполняемой операции согласно табл.4.3.

Таблица 4.3

w s Операция Непосредственный операнд
    8-разрядная 8-разрядный
    не используется
    16-разрядная 16-разрядный
    8-разрядный, расширяемый при выполнении операции знаком до 16-ти разрядов


Для изменения естественного порядка выполнения команд программы в системе команд предусмотрены команды условных и безусловных переходов. Классификация команд переходов в IBM PC представлена на рис.4.4.

Физический адрес выполняемой команды определяется содержимым указателя команд IP и сегментного регистра команд CS. Команды, меняющие значение обоих этих регистров, называются командами межсегментных переходов, а меняющие только значение IP, – командами внутрисегментных переходов.

Команды безусловных переходов производят модификацию этих регистров без предварительного анализа каких-либо условий. При безусловном прямом внутрисегментном переходе новое значение IP равно сумме 8- или 16-разрядного смещения, закодированного в соответствующем поле команды, и текущего значения IP, в качестве которого используется адрес команды, записанной вслед за командой перехода. Команды прямых межсегментных переходов содержат в себе помимо нового значения IP и новое значение CS.

Команды косвенных переходов (внутрисегментных и межсегментных) передают управление на команду, адрес которой определяется содержимым регистра или ячеек оперативной памяти, на которые указывает закодированный в команде перехода пост-байт.

Команды условных переходов являются только внутрисегментными. По своему формату и способу формирования нового значения IP они полностью аналогичны команде внутрисегментного прямого перехода с 8-разрядным смещением. Отличие их заключается в том, что в командах условного перехода механизм формирования нового значения IP включается лишь при выполнении определенных условий, а именно при определенном состоянии флагов регистра процессора. При невыполнении проверяемого условия в IP остается его текущее значение, то есть адрес команды, следующей за командой условного перехода.

Ниже приведены примеры команд переходов различных типов.

Команды условного перехода:

 
 

формат:

IP = IP + 2, если условие не выполнено;

IP = IP +2 + disp L, если условие выполнено;

пример:

JZ MARK; переход на метку MARK, если ZF = 1.

Команды прямого внутрисегментного перехода:

формат:

IP = IP + 2 + disp;

примеры:

 
 

JMP short ptr MARK; переход на метку MARK, с использованием 8-разрядного смещения;

JMP near ptr MARK; переход на метку MARK, с использованием 16-разрядного смещения.

Команды прямого межсегментного перехода:

 
 

формат:

IP = IP_H, IP_L,

CS = CS_H, CS_L;

пример:

JMP far ptr MARK; переход на метку MARK к команде, находящейся в другом сегменте.

Команды косвенного внутрисегментного перехода:

 
 

формат:

IP = [EA + 1, EA];

пример:

JMP word ptr [BX + SI]; новое значение IP берется из двух последовательных байт памяти, эффективный адрес первого из которых определяется суммой регистров BX и SI.

Команды косвенного межсегментного перехода:

 
 

формат:

IP = [EA + 1, EA],

CS = [EA + 3, EA + 2];

пример:

JMP dword ptr [BX + SI]; сумма регистров BX и SI определяет эффективный адрес области памяти, первые два байта которой содержат новое значение IP, а следующие два байта – новое значение CS.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.