Глава 4 - Набор команд микропроцессора 8088

В этой главе дискуссируется набор команд процессора 8088. В прошлых главах подверглось рассмотрению размещение регистров и механизмы адресации процессора; в этой главе будут исследованы операции, которые можно делать при помощи регистров.

Разобьем команды процессора 8088 на несколько групп. Принадлежность команды к той либо другой группе будет определяться функцией, которую она делает Глава 4 - Набор команд микропроцессора 8088. В этой главе описываются группы команд и разъясняется, как идеальнее всего ими воспользоваться, но не будет приводиться оследовательного описания команд (такую задачку решает управление по Макроассемблеру).

Пересылка данных

Команды пересылки данных обычно более нередко употребляются из всего набора команд хоть какой ЭВМ, и процессор 8088 - не исключение. Большая часть каждой задачки по обработке Глава 4 - Набор команд микропроцессора 8088 данных заключается в переносе инфы из 1-го места в другое. Программка может делать некую обработку инфы по мере того, как она пересылается, но огромная часть работы сводится только к пересылке. В этом разделе рассматривается главные команды пересылки данных процессора 8088, а в разделе, посвященном обработке строк - остальная часть таких команд.

Команда Глава 4 - Набор команд микропроцессора 8088 пересылки

Команда MOV - основная команда пересылки данных, которая пересылает б либо слово данных из памяти в регистр, из регисрта в память, либо из регистра в регистр. Команда MOV может также занести число, определенное программером, в регистр либо в память.

В реальности команда MOV - это целое семейство машинных команд Глава 4 - Набор команд микропроцессора 8088 процессора 8088. Таблица, в которую сведены варианты всех машинных команд процессора 8088, приведена в приложении А. Беглый просмотр этой таблицы указывает, что существует семь разных вариантов команды MOV, но программер употребляет каждую из этих команд при помощи одного наименования операции MOV. Ассемблер порождает правильную машинную команду, основываясь на типах операндов, которые Глава 4 - Набор команд микропроцессора 8088 написал программер; и это одна из обстоятельств, по которой ассемблер просит для операндов предназначения типов, т.е. ассемблер должен знать, что представляет собой каждый операнд - регистр, б памяти, слово памяти, сегментный регистр, либо чего-нибудть еще. Такое предназначение типов позволяет ассемблеру выстроить правильную машинную команду. В случае использования команды MOV Глава 4 - Набор команд микропроцессора 8088 ассемблер должен решить, какой из 7 вариантов является подходящим, основываясь на операндах, написанных программером.

На Фиг.4.1 представлены разные методы, которыми в процессоре 8088 можно переслать данные из 1-го места в другое. Каждый прямоугольник значит тут регистр либо ячейку памяти. Стрелки демонстрируют пути пересылки данных, которые допускает набор команд процессора 8088. Основной Глава 4 - Набор команд микропроцессора 8088 путь - из памяти в регистры и напротив. С данными, помещенными в регистры, можно работать с большей эффективностью, чем с данными в памяти, потому что процессор не делает воззвания к памяти каждый раз, когда необходимы данные. Не считая того, все команды процессора 8088 могут указать только один операнд памяти. Потому, к примеру Глава 4 - Набор команд микропроцессора 8088, команда сложения ADD просит, чтоб по последней мере один из операндов был в регистре. Процессор 8088 не имеет способности сложить одну ячейку памяти с другой при помощи одной команды.

Конкретные Константа
Регистры AX, BX, CX, DX, SI, DI, BP, SP
Память Адресок
Сегментные регистры CS, DS, ES, SS

Фиг Глава 4 - Набор команд микропроцессора 8088.4.1 Операции пересылки данных

В самой команде MOV может содежаться новое содержимое регистра. Такая форма операнда именуется конкретным оперндом; данные находятся в самой команде и не требуют вычисления адреса. Вы сможете рассматривать эту форму адресации как особый тип, при котором операнд находится в самой команде, а не кое-где в Глава 4 - Набор команд микропроцессора 8088 другом месте памяти либо в регистре. Не считая команд пересылки, у процессора 8088 есть и команды обработки данных с конкретным операндом.

Из Фиг.4.1 также ясно, что команда может переслать непосредственнйе данные в регистр либо ячейку памяти. Записывать информацию в команду глупо, так что поток данных для команды с конкретным операндом имеет одно направление Глава 4 - Набор команд микропроцессора 8088.

В конце концов, команда MOV может записать сегментный регистр в память либо регистр. Она может также загрузить сегментный регистр из памяти либо из другого регистра. Но не существует команды загрузки сегментного регистра данными с конкретным операндом; это значит, что загружать сегментный регистр такими данными непродуктивно. Если в программке Глава 4 - Набор команд микропроцессора 8088 нужно поместить известное значение в сегментный регистр, необходимо поначалу записать это значение в один из регистров либо в ячейку памяти, а потом можно уже пересылать это значение в сегментный регистр. На Фиг. 4.2 показано, как это сделать.

Microsoft (R) Macro Assembler Version 5.00 1/1/80 04:00:28Фиг. 4.2 Команда пересылки Page 1-1 PAGE ,132 TITLE Фиг Глава 4 - Набор команд микропроцессора 8088. 4.2 Команда пересылки0000 CODE SEGMENT ASSUME CS:CODE,DS:CODE0000 EXWORD LABEL WORD0000 EXBYTE LABEL BYTE0000 8B C3 MOV AX,BX ; Регистр BX --> Регистр AX0002 8B D8 MOV BX,AX ; Регистр AX --> Регистр BX0004 8B 0E 0000 R MOV CX,EXWORD ; Память --> Регистр0008 89 16 0000 R MOV EXWORD,DX ; Регистр --> Память000C Глава 4 - Набор команд микропроцессора 8088 8A 2E 0000 R MOV CH,EXBYTE ; Память --> Регистр (б)0010 88 36 0000 R MOV EXBYTE,DH ; Регистр --> Память (б)0014 BE 03E8 MOV SI,1000 ; Конкретное --> Регистр0017 B3 17 MOV BL,23 ; Конкретное --> Регистр (б)0019 C7 06 0000 R 07D0 MOV EXWORD,2000 ; Конкретное --> Память001F C6 06 0000 R 2E MOV EXBYTE,46 ; Конкретное --> Память (б)0024 A1 0000 R MOV AX,EXWORD ; Память --> Аккумулятор Глава 4 - Набор команд микропроцессора 80880027 A0 0000 R MOV AL,EXBYTE ; Память --> Аккумулятор (б)002A A3 0000 R MOV EXWORD,AX ; Аккумулятор --> Память002D A2 0000 R MOV EXBYTE,AL ; Аккумулятор --> Память (б)0030 8E 1E 0000 R MOV DS,EXWORD ; Память --> Сегментный регистр0034 8E D8 MOV DS,AX ; Регистр --> Сегментный регистр0036 8C 1E 0000 R MOV EXWORD Глава 4 - Набор команд микропроцессора 8088,DS ; Сегментный регистр --> Память003A 8C C0 MOV AX,ES ; Сегментный регистр --> Регистр ;----- Конкретное значение в сегментный регистр003C B8 ---- R MOV AX,CODE ; Взять конкретное значение003F 8E D8 MOV DS,AX ; Загрузить его в сегментный регистр0041 CODE ENDS END Фиг. 4.2 Команды пересылки

На Фиг. 4.2 изображен листинг ассемблера неких вероятных Глава 4 - Набор команд микропроцессора 8088 вариантов команды MOV. Единственная команда ассемблера MOV порождает несколько разных машинных команд. Рассматривая Фиг.4.2, направьте внимание на синтаксис команды MOV. Команда MOV имеет два операнда: источник и итог. В команде они следуют вереницей, источник следует за результатом. 1-ая команда на рисунке MOV AX, BX пересылает содержимое регистра Глава 4 - Набор команд микропроцессора 8088 BX в регистр AX. Последующая команда обратна предшествующей, содержимое регистра AX пересылается в регистр BX. Команда MOV не меняет источник, т.е. команда

MOV AX, BX

меняет регистр AX, итог, но не меняет регистр BX, источник. Никакие из команд MOV не меняют флагов состояния. Хотя время от времени это кажется неловким, но Глава 4 - Набор команд микропроцессора 8088 является лучшим методом работы с флагами. Как мы увидим дальше, процессор 8088 имеет команды, которые могут отлично проверить всякую ячейку памяти так, что команда пересылки не будет нужно. В качестве примера варианта, когда установка флагов при пересылке не нужна, разглядим математику завышенной точности. Когда программка делает вычисления завышенной точности, она Глава 4 - Набор команд микропроцессора 8088 должна переслать части операндов в регистры, чтоб расположить их там для выполнения операции. Такая пересылка не меняет ни 1-го флага, а это позволяет флагам обслуживать математику завышенной точности.

Как было увидено, существует несколько разных вариантов команд пересылки на машинном языке. Объектный код на Фиг. 4.2 иллюстрирует эти варианты. Если вас интересует структура Глава 4 - Набор команд микропроцессора 8088 машинного языка, вы сможете сопоставить объектный код с описанием машинного языка в приложении А. Такое сопоставление поможет узнать значение отдельных битов в машинном коде. К примеру, вы можете узреть значения данных с конкретным операндом в командах. К счастью, для того, чтоб писать программки на ассемблере, вам не требуется точно Глава 4 - Набор команд микропроцессора 8088 знать, как работает ассемблер.

Если вы желаете достигнуть большей вероятной эффективности программ, вам нужно изучить объектный код на Фиг. 4.2. Число байтов команды конкретно связано с количеством времени, нужного для выполнения этой команды. К примеру, команда пересылки, которая берет конкретное значение и отправляет его в память, занимает 6 б. Набор команд Глава 4 - Набор команд микропроцессора 8088 процессора 8088 содержит несколько команд, оптимизированных для работы с аккумом AX или AL. Внедрение этих команд поможет вам сберечь время и место в программках, где это принципиально.

Последние две команды на Фиг. 4.2 демонстрируют, как занести конкретное значение в сегментный регистр. Хоть какой другой регистр, в примере это регистр Глава 4 - Набор команд микропроцессора 8088 AX, может временно содержать конкретное значение перед его записью в сегментный регистр.

Есть и другеи команды, которые переносят данные. Пример на Фиг. 4.3 иллюстрирует эти команды.

Microsoft (R) Macro Assembler Version 5.00 1/1/80 04:00:33Фиг. 4.3 Команды пересылки данных Page 1-1 PAGE ,132 TITLE Фиг. 4.3 Команды пересылки данных0000 CODE SEGMENT ASSUME CS:CODE, DS:CODE0000 EXDWORD Глава 4 - Набор команд микропроцессора 8088 LABEL DWORD0000 EXWORD LABEL WORD0000 EXBYTE LABEL BYTE0000 87 D9 XCHG BX,CX ; Регистр BX Регистр CX0002 87 1E 0000 R XCHG BX,EXWORD ; Регистр BX Память0006 93 XCHG AX,BX ;Регистр AX Регистр BX0007 E4 20 IN AL,020H ; Порт 20H --> AL0009 EC IN AL,DX ; Порт (DX) --> AL000A E6 21 OUT 021H,AL ; AL Глава 4 - Набор команд микропроцессора 8088 --> Порт 021H000C EE OUT DX,AL ; AL --> Порт (DX)000D 8D 36 0000 R LEA SI,EXWORD ; Адресок(EXWORD) --> SI0011 C5 36 0000 R LDS SI,EXDWORD ; M(EXDWORD) --> SI ; M(EXDWORD+2) --> DS0015 C4 3E 0000 R LES DI,EXDWORD ; M(EXDWORD) --> DI ; M(EXDWORD+2) --> ES0019 9F LAHF ; Флаги --> AH Глава 4 - Набор команд микропроцессора 8088001A 9E SAHF ; AH --> Флаги001B D7 XLAT EXBYTE ; M(BX+AL) --> AL001C CODE ENDS END Фиг. 4.3 Команды пересылки данных

Команда подмены

Команда подмены XCHG просто меняет местами содержимое 2-ух ячеек. Эта команда может поменять местами содержимое 2-ух регистров, либо регистра и памяти. При всем этом в качестве операндов Глава 4 - Набор команд микропроцессора 8088 не могут употребляться сегментные регистры.

Команда XCHG подменяет три команды пересылки и не просит промежной ячейки памяти. Если б команда подмены не существовола, программке потребовалось бы три пересылки, чтоб поменять значения в регистре AX и в регистре BX. Поначалу она должна была бы переслать содержимое регистра AX в рабочую ячейку Глава 4 - Набор команд микропроцессора 8088, потом переслать содержимое регистра BX в регистр AX, и в конце концов, переслать содержимое рабочей ячейки в регистр BX. Команда XCHG одна делает эту операцию.

Команды ввода и вывода

Для выполнения операций ввода и вывода процессор 8088 имеет команды IN и OUT соответственно. Каждое устройство ввода-вывода IBM PC имеет один либо больше Глава 4 - Набор команд микропроцессора 8088 интегрированных регистров, с которыми могут работать эти команды. Каждое устройство ввода-вывода имеет адресок для каждого регистра в устройстве. Это адресное место отличается от адресного пространтва памяти; всего существует 256, либо 65536 адресов ввода-вывода, доступных процессору 8088. В IBM PC - 512 из этих адресов назначены системному каналу ввода-вывода и Глава 4 - Набор команд микропроцессора 8088 могут употребляться разными адаптерами. Другие 256 адресов употребляются на системной плате для управления присоединенными туда устройствами ввода-вывода.

Команда IN пересылает данные из устройства ввода-вывода в регистр AL. Эта команда может указать адресок устройства ввода-вывода 2-мя разными методами. Если адресок устройства находится в границах 0 - 255, он может содержаться в команде как Глава 4 - Набор команд микропроцессора 8088 конкретное значение. Если адресок больше 255, команда докладывает это косвенно. В случае косвенной команды адресок устройства ввода-вывода содержится в регистре DX. Регистр DX может содержать адреса всех устройств ввода-вывода, включая те, номера которых меньше 256.

Аналогично работает команда OUT, кроме того, что она записывает регистр AL Глава 4 - Набор команд микропроцессора 8088 в регистр устройства ввода-вывода. Адреса в команде OUT указываются так же, как и в команде IN.

Команды IN и OUT также могут пересылать слова в устройства ввода-вывода и из их. В случае работы со словами источником и приемником является регистр AX. Потому что у процессора 8088однобайтовая наружняя Глава 4 - Набор команд микропроцессора 8088 шина, устройства ввода-вывода IBM PC работают только с б при всех операциях ввода-вывода. Это значит, что операции ввода-вывода слов не употребляются в индивидуальной ЭВМ. Но пословные операции ввода-вывода имеют смысл в системе с процессором 8086, который имеет тот же набор команд.


glava-4-analiz-infekcionnoj-i-parazitarnoj-zabolevaemosti-v-kurganskoj-oblasti.html
glava-4-annotaciya.html
glava-4-bazovij-kurs-ochisheniya-organizma-vladimir-sokolinskij-ponyatnie-metodi-ukrepleniya-zdorovya-dlya-zanyatih-i-razumnih.html