Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ASMMET.DOC
Скачиваний:
20
Добавлен:
27.03.2015
Размер:
339.46 Кб
Скачать

Введение

Микропроцессор 8086 фирмы INTEL(у нас К1810ВМ86) по воле коньюктуры рынка стал основой персональных ЭВМ фирмыIBMи большого числа программно – совместимых компьютеров других фирм, известных у нас под названием «IBMPC» или «IBMPCсовместимый компьютер». 8086 явился основополагающим в серии процессоровx86 фирмыINTEL, все модели которой от 80286 доPentiumимеют кроме защищенного режима работы режим совместимости с процессором 8086 – реальный режим.

Изучение микропроцессора 8086 требуется для понимания функционирования микропроцессоров фирмы INTELи им подобных.

Программная модель микропроцессора Intel8086

Микропроцессор Intel8086 (МП) является однокристальным 16-разрядным процессором с фиксированной системой команд. Система команд содержит безадресные, одноадресные и двухадресные команды, обеспечивающие эффективную запись программы и обработку различных типов данных. МП позволяет вести обработку битов, двоично-десятичных упакованных и распакованных чисел, байтов, двухбайтовых слов и строк до 216байт длиной. Числа представляются в дополнительном коде с фиксированной запятой, знаковый разряд – старший.

МП имеет 20-разрядныю адресную шину, которая обеспечивает обращение к 1 Мб памяти. Однако в МП принята сегментная адресация памяти. МП оперирует 16- разрядными смещениями в сегменте. Адреса сегментов хранятся в специальных регистрах, получивших название сегментных. Смещение в сегменте (в некоторой литературе – эффективный адрес (ЕА)) указывается в командах, либо вычисляется в соответствии с принятым способом адресации.

Физический адрес памяти всегда формируется как сумма адреса сегмента и смещения в сегменте, т.е. в этом МП жестко заложен механизм относительной адресации независимо от цели обращения к памяти и способа адресации операнда, который влияет лишь на способ определения смещения (эффективного адреса).

Память в ВМ86 логически организована в виде последовательности смежных байтов, однако физическая память организована в виде последовательности 16-разрядных слов, организованных в два банка по 512 Кбайт

  • банк нечетных байтов – старший банк (D15-D8)

  • банк четных байтов – младший банк (D7-D0)

Адрес байта

Старший банк

Младший банк

Адрес байта

00001

15

8

7

0

00000

00003

00002

00005

00004

Адресом слова является адрес младшего байта.

В этом МП первый байт слова может иметь как четный, так и нечетный адрес в памяти. Но при этом необходимо помнить, что процессор может осуществлять обращение к слову в одном цикле памяти, если это слово имеет четный адрес. Если в команде указано слово с нечетным адресом, то МП обращается к двум словам в памяти и формирует необходимое слово за два обращения к памяти. Исходя из этого имеет смысл работать со словами, имеющими четные адреса.

Кроме памяти МП обеспечивает обращение к подсистеме ввода- вывода, которая может содержать до 216 адресуемых регистров.

В МП реализована векторная система прерываний, число различных векторов- 256.

Микропроцессор имеет 14 16-разрядных программно-доступных регистров.

15

8

7

0

AH

AL

AX

регистры

данных

EH

BL

BX

CH

CL

CX

DH

DL

DX

регистры

общего

назначения

15

0

Индексн. рег. источн.

SI

регистры

адреса

Индексн. рег. приемн.

DI

Указатель базы

BP

Указатель стека

SP

Указатель команд

IP

– "программный счетчик"

Восемь регистров считаются регистрами общего назначения, поскольку во время выполнения программы в них могут храниться адреса и данные. Однако эти регистры имеют и закрепленные функции, что делает их неодинаковыми с точки зрения использования. Четыре регистра общего назначения AX, BX, CX, DX являются регистрами данных, т.к. их основное назначение – хранение операндов и результатов операций. Система команд допускает использование этих регистров целиком и в виде старшей и младшей половин. В команде, операндами которой являются слова, используется весь регистр целиком.

В тех командах, где операнды являются байтами, может быть указана любая половина любого из четырех регистров данных (например, AL иAH).

Кроме общих функций внутри этой группы имеется и более узкая специализация. При выполнении команд за этими регистрами по умолчанию закреплены различные функции. Это обстоятельство требует от программиста соблюдение определенных условий при распределении и использовании регистров. Закрепленные за регистрами функции приведены в таблице 1.

сегмент команд

CS

Сегментные

Регистры

сегмент данных

DS

сегмент стека

SS

Дополнит. сегмент

ES

регистр флагов

F

– регистр состояния

Регистр

Назначение

Закрепленные функции

AX

Аккумулятор

Ввод-вывод, умножение и деление слова

AL

Аккумулятор (мл. байт)

Ввод-вывод, умножение и деление байтов, десятичная арифметика, преобразование кодов

AH

Аккумулятор (ст. байт)

Умножение и деление байтов

BX

Базовый регистр

Базовый регистр, преобразование адресов

CX

Счетчик

Обработка строк. Подсчет циклов

CL

Счетчик

(мл. байт)

Динамические и циклические сдвиги

DX

Регистр данных и адреса ввода-вывода

Умножение и деление слов;

Косвенная адресация регистров

Ввода-вывода

Следующие четыре общих регистра SP, BP, SI, DI применяются в основном для хранения 16-разрядных адресов, поэтому их можно отнести к адресным регистрам. И операнды, и адреса, хранимые в этих регистрах, могут быть только 16-разрядными.

Регистр SP является системным указателем стека, используемым при прерываниях и обращении к подпрограммам. В этом регистре хранится и формируется текущий адрес внутри сегмента стека.

Регистр BP является базовым регистром, используется при формировании адресов операндов (так же какBX).

Регистры SI иDI являются индексными регистрами, используются при формировании адресов операндов и выполнении строковых операций.

Регистр IP – указатель команд, фактически является регистром адреса команд или программным счетчиком. В этом регистре формируется адрес команды внутри сегмента памяти.

Адреса, хранящиеся или формируемые с помощью этих регистров, не являются окончательными адресами памяти. Это адреса внутри сегмента или так называемые смещения. Окончательный адрес или физический адрес памяти определяется содержимым соответствующего сегментного регистра – CS, DS, SS, ES.

Все регистры, участвующие в формировании адреса, имеют длину 16 разрядов, а физический адрес, вырабатываемый микропроцессором, содержит 20 разрядов. Дополнительные 4 бита образуются при сложении 16-разрядного смещения с содержимым одного из сегментных регистров, сдвинутым на 4 разряда влево. Перенос из старшего разряда игнорируется.

15

0

+

– смещение

15

0

Сегментный регистр

0000

– адрес сегмента

19

0

– физический адрес

Например: формирование адреса команды производится по следующей схеме:

15

0

+

IP

15

0

CS

0000

19

0

Адрес команды

Применение сегментных регистров разделяет пространство памяти на 64 Кбайтные сегменты, располагающиеся в памяти с адресов, кратных 16. В большинстве случаев использование сегментного регистра при формировании физического адреса происходит по умолчанию в соответствии с операцией и именем, присвоенным регистру.

CS – сегментный регистр команд, используется при чтении команд.

SS – сегментный регистр стека, используется при работе со стеком.

DS – сегментный регистр данных, используется при обращении к операндами.

ES – дополнительный сегментный регистр, используется при работе с операндами.

В командах обработки данных можно нарушить правило умолчания. Для этого в командах используется явное указание сегментного регистра (префикс сегмента).

Регистр состояния процессора имеет название регистра флагов и считается 16-разрядным, хотя используется в этом регистре всего 9 разрядов.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

CF

DF

IF

TF

SF

ZF

AF

PF

CF

Содержимое отдельных разрядов называется флагом или флажком условий или управления.

Флаги состояния:

SF – знак результата, установлен, если результат<0.

ZF – нуль результата, устаговлен, если результат =0.

FF – паритет, установлен если младший байт результата содержит четное число единиц.

CF – перенос, устанавливается если результат выходит за разрядную сетку.

AF–вспомогательный перенос, признак десятичной коррекции при обработке двоично-десятичных чисел

OF – переполнение, устанавливается при переполнении числовых разрядов разрядной сетки

Флаги управления:

DF –направление. Применяется в командах обработки строк. Если этот флажок сброшен, цепочка обрабатывается с первого элемента, имеющего наименьший адрес. В противном случае цепочка обрабатывается от наибольшего адреса к наименьшему.

IF – разрешение прерываний. Если флажок сброшен, то прерывания запрешены, установлен- разрешены.

TF – трассировка. Если этот разряд установлен, то после выполнения каждой команды генерируется внутреннее прерывание.

Разряды регистра флагов программно доступны как для чтения, так и для записи.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]