КАТЕГОРИИ: Архитектура-(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. Поскольку команда располагается адрес в ЗУ по нарастающей адреса:
то можно заметить, что многобайтовое число в ЗУ располагается таким образом: младшая часть располагается по младшему адресу, старшая часть—по старшему адресу. Это правило справедливо для всех типов микропроцессоров. Следующая команда — команда загрузки данных в приемник: 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, и
Еще один пример. Пример 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
Ко всему, что рассмотрено, следует добавить, что обращение к каждой указанной ячейке памяти будет производиться (по умолчанию) в текущем сегменте 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 (адрес—в Н-коде).
КОП только второй команды с сегментным регистром. Собственно говоря, типы первой и третьей команды уже рассматривались, поэтому составим только его вторую часть (2-й байт). Из архитектуры МП (рисунок 9.1) определяем номер DS: № DS=112. D 9
mod=>RG № RS CX
Переводим вторую половину КОП в Н-код: D9; а весь КОП=8Е D9.
Дата добавления: 2014-01-07; Просмотров: 452; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |