Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Команды управления циклами

КОМАНДА ЗАГРУЗКИ ИСПОЛНИТЕЛЬНОГО АДРЕСА LEA

КОМАНДА ОБМЕНА XCHG

КОМАНДЫ ПЕРЕДАЧИ ДАННЫХ MOV

ОДНОБАЙТНЫЕ КОМАНДЫ БЕЗ ОПЕРАНДОВ

ФОРМАТЫ КОМАНД POP и PUSH

ФОРМАТЫ КОМАНДЫ INC

ФОРМАТ ДВУХОПЕРАНДНЫХ КОМАНД С АКУМУЛЯТОРОМ И НО

 

Аккумулятор целесообразно использовать чаще при записи программы, т. к. для него реализован специальный укороченный формат без post-байта

┌───────┬─┐ ┌─────┐ ┌ ─ ─ ┐

│ KOP │W│ │dataL│ dataH

└───────┴─┘ └─────┘ └ ─ ─ ┘

 

Mov AL,5h

 

┌───────┬─┐ ┌────┐

│ KOP │0│ │ 05 │

└───────┴─┘ └────┘

w

Этот формат работает для AL и AX. Аккумулятор подразумевается по умолчанию.

w = 0 -> AL

w = 1 -> AX

В самой команде код регистра отсутствует:

 

Sub AX,-1

└┬──────┘ │

┌───────┬─┐ ┌─────┐

│ KOP │1│ │FF FF│

└───────┴─┘ └──┴──┘

w data

 

Все двухоперандные команды имеют по 3 формата:

 

1) Add mem/reg,mem/reg

2) Add mem/reg,data

3) Add AC,data;AC – старший или младший аккумулятор

------------------------------------------------------------

(1) mem,reg reg,mem reg,reg ┐

------- ------- ------- ├ c post-байтом

(2) mem,data reg,data ┘

-------- --------

(3) AC,data - без post-байта

-------

В однооперандных командах типа умножения и деления используется один формат:

Imul mem/reg

Второй и третий форматы не используются, т. к. умножение на константу не предусмотрено.

 

 

 

Inc mem/reg8;память или 8-разр. регистр

Inc reg16;16-разр. регистр

**Inc [BX+SI] – НЕВОЗМОЖНО, т.к. неизвестно байт это, или слово.

Inc word ptr [BX+SI]

 

┌──────┬─┐ ┌──┬─────┬───┐

│ kop │1│ │00│ кор │000│

└──────┴─┘ └──┴─────┴───┘

w mod reg r/m

 

Inc BL

┌──────┬─┐ ┌──┬─────┬───┐

│ kop │0│ │11│ кор │011│

└──────┴─┘ └──┴─────┴───┘

w mod reg r/m

 

Inc BX

7 3 2 0

┌──────┬───┐ ┌─────┬───┐

│ kop │reg│ │ кор │011│

└──────┴───┘ └─────┴───┘

│ reg

└─ второй укороченый формат для 16-разр. регистров

Аналогично построены форматы команды DEC.

Сокращают код программы и повышают ее эффективность.

 

 

 

POP mem16

POP reg16

Команды работы со стеком всегда работают только со словами, поэтому запись команды:

POP AL – синтаксическая ошибка

 

POP AX

┌─────┬───┐

│ кор │000│

└─────┴───┘

reg

если используется память, то:

PUSH A[BX+SI]; A – обязательно слово

┌──────┬─┐ ┌──┬─────┬───┐ ┌─────────┐

│ kop │1│ │10│ кор │001│ │ адрес А │

└──────┴─┘ └──┴─────┴───┘ └────┴────┘

w mod reg r/m disp

 

 

 

RET, CBW, CWD, CLI, STC и др. имеют только код операции:

 

7 0

┌─────┐

│ кор │

└─────┘

 

 

 

Mov OP1,OP2

(1) Mov mem/reg,mem/reg

(2) Mov mem/reg,data

(3) Mov AC,data

Такие же форматы, как для двухоперандных арифметических команд.

Команда MOV наиболее часто используется в программах, и специально для нее предложены дополнительные форматы:

 

Mov reg,data

┌───────┬──┬───┐ ┌─────┐ ┌ ─ ─ ┐

│ KOP │W │reg│ │dataL│ dataH

└───────┴──┴───┘ └─────┘ └ ─ ─ ┘

└ любые 8,16 разрядные

 

Mov AC/mem,mem/AC

 

Пример:

Mov BP,-10

 

┌───────┬──┬───┐ ┌─────┐

│ KOP │1 │101│ │FF F6│

└───────┴──┴───┘ └──┴──┘

 

Mov Sreg,mem/reg

Mov mem/reg,Sreg

┌───────┐ ┌───┬────┬─────┐ ┌ ─ ─ ─┐ ┌ ─ ─ ┐

│ KOP │ │mod│Sreg│ r/m │ dispL dispH

└───────┘ └───┴────┴─────┘ └ ─ ─ ─┘ └ ─ ─ ┘

┌────┬───┴───┬────┐

┌──┴┐ ┌─┴─┐ ┌─┴─┐ ┌┴──┐

000 001 010 011

ES CS SS DS

Сегментные регистры только 16 разрядные

 

 

XCHG OP1,OP2

XCHG reg,reg/mem

 

 

 

LEA OP1,OP2

LEA reg,mem

 

┌───────┐ ┌───┬───┬───┐ ┌────┐

│ KOP │ │mod│reg│r/m│ │disp│

└───────┘ └───┴───┴───┘ └────┘

 

* d – нет, т. к. адрес всегда загружается в регистр МП

* w – нет, т. к. адрес загружается только в 16-ти разрядный регистр.

 

┌───────┐ ┌───┬───┬───┐

│ KOP │ │mod│reg│r/m│

└───────┘ └───┴───┴───┘

└───────┴───── обозначают только память, поэтому mod <> 11

 

LEA BX,A

A┌──┬──┬──┬──┬──┬──┬──┐

│a1│a2│..│..│..│..│aN│

└──┴──┴──┴──┴──┴──┴──┘

┌──────┐ ┌──┬─────┬───┐ ┌─────────┐

│ kop │ │00│ 011 │110│ │ адрес А │

└──────┘ └──┴─────┴───┘ └────┴────┘

 

Поле disp прямого адреса А формируется на этапе трансляции, выполняется действие BX:=disp, при выполнении команды обращения к памяти не происходит, потому что поле disp можно считать НО.

Действие команды эквивалентно:

mov bx,offset A

bx:=адрес А

 

 

<== предыдущая лекция | следующая лекция ==>
В которой второй операнд непосредственный | Передача параметров в процедуру
Поделиться с друзьями:


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


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



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




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