русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

БАЙТ СПОСОБА АДРЕСАЦИИ


Дата добавления: 2014-11-28; просмотров: 1180; Нарушение авторских прав


 

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

001ХХ110, где биты ХХ определяют сегмент.

 

Таблица 3.

Префикс замены сегмента

 

XX Байт префикса замены сегмента Сегментный регистр
ES
2E CS
SS
3E DS

 

Следовательно, если первый байт машинного кода команды не равен 26, 2Е, 36 или 3Е, то он содержит код операции и биты “d”, “w”. Бит “d” указывает направление передачи между операндом 1 и операндом 2. Если d=1, то направление в микропроцессор (в регистр из памяти или регистра). Если d=0, то направление из микропроцессора (из регистра в память или регистр). Бит “w” определяет длину операндов. Если w=1, то длина операнда - слово (два байта). Если w=0, то длина операнда - байт.

В командах с непосредственным операндом бит “d” не нужен, так как результат можно поместить только на место первого операнда. Но зато в этом формате необходимо определить размер непосредственного операнда. Для этой цели служат биты “s” и “w”, интерпретируемые следующим образом.

Таблица 4.

Размер непосредственного операнда

 

sw Размер непосредственного операнда
один байт
один байт
два байта
один байт, который расширяется со знаком до 16 бит

 

В командах сдвига стоят биты “c” и “w”, где бит “c” определяет где находится число сдвигов. Если с=1, то число сдвигов задано в регистре CL. Если с=0, то осуществляется сдвиг на один разряд. Следующий байт команды является байтом способа адресации и состоит из следующих трех полей: mod, reg, r/m.

Значения полей mod, reg, r/m приведены в приложении. Два бита mod определяют адресацию регистра или памяти. Ниже поясняется их значение.



 


Таблица 5.

Значение поля mod

 

Значение поля mod Адресация операнда
адрес ячейки памяти, смещение отсутствует
адрес ячейки памяти и один байт смещения, который расширяется со знаком до слова
адрес ячейки памяти и два байта смещения
регистр

 

Три бита reg (вместе с битом w) определяют конкретный восьми- или шестнадцатибитовый регистр.

 

Таблица 6.

Значение поля reg

 

reg w=0 w=1
AL AX
CL CX
DL DX
BL BX
AH SP
CH BP
DH SI
BH DI

 

Три бита r/m (регистр/память) совместно с битами mod определяют способ адресации.

 


Таблица 7.

Значение поля r/m

 

  mod   r/m w=0 w=1
сегментный регистр (BX)+(SI) DS (BX)+(SI)+D8 DS (BX)+(SI)+D16 DS AL AX  
сегментный регистр (BX)+(DI) DS (BX)+(DI)+D8 DS (BX)+(DI)+D16 DS CL CX  
сегментный регистр (BP)+(SI) SS (BP)+(SI)+D8 SS (BP)+(SI)+D16 SS DL DX  
сегментный регистр (BP)+(DI) SS (BP)+(DI)+D8 SS (BP)+(DI)+D16 SS BL BX  
сегментный регистр (SI) DS (SI)+D8 DS (SI)+D16 DS AH SP  
сегментный регистр (DI) DS (DI)+D8 DS (DI)+D16 DS CH BP  
сегментный регистр Data16 DS (BP)+D8 SS (BP)+D16 SS DH SI  
сегментный регистр (BX) DS (BX)+D8 DS (BX)+D16 DS BH DI  
                       

 

Рассмотрим режимы адресации на примере команды OR (логическое “ИЛИ”). Эта команда выполняет поразрядное логическое сложение над битами двух операндов.

Объектный код данной команды имеет три формата (объектные коды команд приведены в приложении “Команды процессора 8086”):

1. Регистр/память с регистром

000010dw MOD REG R/M DISP LOW DISP HIGH

2. Непосредственное значение с регистром/памятью

1000000w MOD 001 R/M DISP LOW DISP HIGH DATA DATA, если W=1

3. Непосредственное значение с аккумулятором (регистром АХ (АL))

0000110w DATA DATA, если W=1

 

1.Непосредственный режим адресации

Пример. OR CL,OF

Логическое сложение содержимого регистра CL и непосредственного значения OF. Данному режиму адресации соответствует второй формат объектного кода (непосредственное значение с регистром). Определим байт способа адресации (W, mod, r/m) :

w=0, т.к. размер операнда - 1 байт,

mod=11, т.к. сложение с регистром, а не с памятью,

r/m=001, что соответствует регистру.

Таким образом, объектный код команды OR CL,OFH имеет вид

или в 16-й системе счисления 80C90F.

2. Регистровый режим адресации

Пример. OR DX,CX

Логическое сложение содержимого регистров DX и CX.

Данному режиму адресации соответствует первый формат объектного кода (регистр с регистром). Определим байт способа адресации (d, W, mod, reg, r/m ) :

d=0, т.к. reg описывает операнд 2, а r/m - операнд 1,

w=1, т.к. размер операнда - слово,

mod=11, т.к. сложение с регистром, а не с памятью,

reg=001, что соответствует регистру CX,

r/m=010, что соответствует регистру.

Таким образом, объектный код команды ORCX,DX имеет вид

или в 16-й системе счисления O9CA.

3. Регистровый косвенный режим

Пример. OR CL,byte ptr [BX]

Логическое сложение регистра CL с ячейкой памяти по адресу, находящемуся в BX.

Данному режиму адресации соответствует первый формат объектного кода (память с регистром).

Определим байт способа адресации (d, W, mod, reg, r/m):

d=1, т.к. reg описывает операнд 1, а r/m - операнд 2,

w=0, т.к. размер операнда - байт,

mod=00, что соответствует регистру BX,

reg=001, что соответствует регистру CL,

r/m=111, что соответствует регистру BX.

Таким образом, объектный код команды имеет вид

или в 16-й системе счисления 0A0F.

4. Регистровый относительный режим адресации

Пример: OR DL,byte ptr [BX+48]

Логическое сложение содержимого регистра DL с ячейкой памяти по адресу BX+48H.

Данному режиму адресации соответствует первый формат объектного кода (регистр/память с регистром).

Определим байт способа адресации (d, W, mod, reg, r/m):

d=1, т.к. reg описывает операнд 1, а r/m - операнд 2,

w=0, т.к. размер операнда - байт,

mod=01, что соответствует BX+D8 ,

reg=010, что соответствует регистру DL ,

r/m=111, что соответствует BX+D8.

Таким образом, объектный код команды имеет вид

или в 16-й системе счисления 0А5748.

5. Базовый индексный режим адресации

Пример: OR AX,word ptr [BP+DI]

Логическое сложение содержимого регистра AX с ячейкой памяти по адресу BP+DI.

Данному режиму адресации соответствует первый формат объектного кода.

Определим байт способа адресации :

d=1, т.к. reg описывает операнд 1, а r/m - операнд 2,

w=1, т.к. размер операнда - слово,

mod=00, что соответствует BP+DI,

reg=000, что соответствует регистру AX,

r/m=011, что соответствует BP+DI.

Таким образом, объектный код команды имеет вид

или в 16-й системе счисления 0B03.

6. Относительный базовый индексный режим адресации

Пример: OR CL,byte ptr [BX+SI+0084]

Логическое сложение содержимого регистра CL с ячейкой памяти по адресу BX+SI+0084.

Данному режиму адресации соответствует первый формат объектного кода.

Определим байт способа адресации:

d=1, т.к. reg описывает операнд 1, а r/m - операнд 2,

w=0, т.к. размер операнда - байт,

mod=10, что соответствует BX+SI+D16,

reg=001, что соответствует регистру CL,

r/m=000, что соответствует BX+SI+D16.

Таким образом, объектный код команды имеет вид

или в 16-й системе счисления 0А888400.



<== предыдущая лекция | следующая лекция ==>
ПРЕРЫВАНИЯ АССЕМБЛЕРА | РЕЖИМЫ АДРЕСАЦИИ ПЕРЕХОДОВ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.296 сек.