КАТЕГОРИИ: Архитектура-(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; Просмотров: 299; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |