Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тип кода операции с dst. Группа команд MOV

По формату КОП видно, что расположение dst и формирование его точно такое же, как и в первом типе формата. Поэтому все выше изложенное справедливо и для этого типа формата команд. Из-за отсутствия src три разряда D5..D3 используются в качестве расширения КОП. КОП также поглотил и разряд D9, поскольку при одном абоненте об изменении направления пересылки говорить бессмысленно.

Теперь можно перейти к командам.

Команда: MOV dst, src

КОП команды MOV:

микро КОП

 

       
   
 
 

 


Рассмотрим пару примеров по синтезу ассемблера и машинного кода.

Пример 1 — Переслать содержимое регистра BL в регистр AL.

Кратко: AL: = <BL>.

Ответ:

а) ассемблер: MOV AL, BL;

б) машинный кол;

w=0 (1 байт);

d=0 (направление не меняется);

src=011 (адрес регистра BL, - из рисунка 9.1);

dst=11 000 (mod=11— из таблицы 10.2; reg/mem=reg=000 — адрес регистра AL — из рисунка 9.1).

Составляем КОП:

 

 

 


 

8 8 D 8

 

 

Разбиваем КОП на тетрады и переводим в Н-код (шестнадцатеричный код). Получается, что вся команда состоит из одного КОПа 88D8, так как адресация src и dst —непосредственная.

Пример 2 — Отправить в ячейку памяти с адресом 1FCO содержимое регистра CL. Кратко: M1FC0: =<CL> (M —от MEMORY —память);

Ответ:

а) ассемблер: MOV [1FCO], CL (в квадратных скобках указывается или адрес — при прямой адресации, или источник адреса — при косвенной адресации, или источник плюс смещение, или источник плюс источник плюс смещение— при комбинационной адресации);

б) машинный код: w=0; d=0; src=001; dst=[mod=00; reg/mem=110]; составляем КОП:

 

 


8 8 0 E

 

Разбиваем на тетрады и получаем КОП=880Е. А вся команда будет выглядеть так: 88 ОЕ СО 1 F. Поскольку команда располагается

адрес

в ЗУ по нарастающей адреса:

 

       
 
   
 

 


0E
i+1
код операции

       
 
   
 


1F
i+3
адрес

 

то можно заметить, что многобайтовое число в ЗУ располагается таким образом: младшая часть располагается по младшему адресу, старшая часть—по старшему адресу. Это правило справедливо для всех типов микропроцессоров. Следующая команда — команда загрузки данных в приемник:

MOV dst, data

Формат команды:

 

расширение микро КОП

 
 


микро КОП

           
     
 
 

 


Рассмотрим пример.

Пример 3 —Данные 5С отправить в ячейку памяти с адресом 1FCO. Кратко: M1FCO:=5C.

Ответ:

3) длина пересылаемых данных —1 байт;

2) ассемблер: MOV BYTE [lFCO] (byte —байт—длина данных; обязательно нужно указывать, если dst— память);

3) машинный код: w=0, dst =00 110 (mod=00, reg/mem=110); составляем КОП:

 

 
 

 


C 6 0 6

 

Разбиваем на тетрады и записываем КОП в Н-коде: С6 06, и

адрес данные
команду в целом: С6 06 С0 1F5C.

 

Еще один пример.

Пример 4 — Необходимо переслать два байта в две ячейки памяти: М1FCO:=6D, M1FC1 :=5A.

Ответ: поскольку МП 8086—16-разрядный, и учитывая, что байты отправляются в две соседние ячейки ЗУ, оформляем это следующим образом:

1) ассемблер: MOV WORD [IFCO], 5A6D (word —слово, то есть 2 байта: смотрите пример 3).

В команде число 5A6D пишется как единое число, и поскольку 5А располагается по адресу 1FC1, то в 16-разрядном числе оно и является старшим (как уже отмечалось выше), a 6D —младшим. А вот адрес в команде можно указывать только один. Поэтому принято во всех видах микропроцессоров для многобайтового слова указывать адрес только младшей его части.

 

2) машинный код: w=l:

 


C 7 0 6

 

адрес данные
Код операции C7 06, а весь машинный код: С7 06 С0 1F6D 5А. Это самая длинная команда в МП 8086.

 

Ко всему, что рассмотрено, следует добавить, что обращение к каждой указанной ячейке памяти будет производиться (по умолчанию) в текущем сегменте DS. Но как быть, если надо указать непосредственно физический адрес, ну, допустим A=3B8DO? В этом случае необходимо разделить (по своему усмотрению, если нет других условий) сегмент и текущий адрес в сегменте. Пусть DS=3B00. Тогда

ЕА =_3B8D0

3В00

08D0 — текущий адрес внутри сегмента (эффективный адрес).

Если известно, как переслать данные по адресу ЕА внутри сегмента, то, как обратится к физическому адресу? Ведь нужно еще и загрузить значение сегмента данных в DS: DS: =3B00. Для этих целей разработана специальная группа команд — сегментные команды. Обозначим сегментный регистр (их четыре) обобщенным обозначением RS.

1) MOV RS,dst; Комментарий: RS: = <dst>.

расширение микро КОП

микроКоп

 

 
 

 

 


RS

 

Формат кода операции:

2)МОУ dst,RS; Комментарий: dst:= <RS>; Формат кода операции:

 

расширение микро КОП

микроКОП

 

 
 

 


RS

 

Из обоих форматов видно, что пересылка из RS или в RS отличается только первым байтом КОП. Рассмотрим пример.

Пример 5 —Необходимо выполнить действие: М3В8D0 = <АL>.

Ответ: распишем последовательность действий:

1) в любой регистр (кроме АХ) загрузим данные для DS; пусть это будет СХ: СХ:=ЗВ00;

2) перешлем: DS: = <CX>;

3) перешлем: M DS: ЕА = М3В00: 8D0 = М3В8D0 = <AL>.

И пусть эта последовательность команд будет расположена с адреса 0100 (адрес—в Н-коде).

 

Адрес Машинный код Ассемблер Комментарий
  С7 С1 3B MOV CX, 3B00 В регистр СХ загрузить данные 3B00
  8E D9 MOV DS,CX В сегментный регистр DS переслать содержимое СХ
  D0 MOV [08D0],AL Загрузить в ячейку памяти c адресом DS:08D0=3B8D0 содержимое AL

 

КОП только второй команды с сегментным регистром. Собственно говоря, типы первой и третьей команды уже рассматривались, поэтому составим только его вторую часть (2-й байт). Из архитектуры МП (рисунок 9.1) определяем номер DS: № DS=112.

D 9

           
     
 
 

 

 


mod=>RG RS CX

 

Переводим вторую половину КОП в Н-код: D9; а весь КОП=8Е D9.

 

<== предыдущая лекция | следующая лекция ==>
Тип кода операции с dst и rsc | Ответ: отношение не­строго порядка, отношения пред­шествования
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 452; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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