Скачиваний:
89
Добавлен:
21.02.2014
Размер:
55.3 Кб
Скачать

36. Программная модель i8086

Состоит из РОН, сегментных регистров, IP и регистров флага.

РОН делятся на: регистры данных и регистры указателей.

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

Регистры указатели

15…8

7…0

15…8

AX

АH

AL

SP

BX

BH

BL

BP

CX

CH

CL

SI

DX

DH

DL

DI

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

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

15…0

15…0

CS

IP

DS

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

SS

15…0

ES

X/X/X/X/OF/DF/IF/TF/ST/ZF/X/AF/X/PF/X/CF

OF-11; SP – указатель стека

DF=10; BP – базовый регистр

IF-9; SI – индекс источника

TF-8; DI – индекс назначения

SF-7; CS – сегмент кодов

ZF-6; DS – сегмент данных

AF-4; SS – сегмент стека

PF-2; ES – дополнительный сегмент данных

CF-0;

РОН делятся на регистры данных и указателя . К регистрам данных относятся 4е 16ти разрядные регистры, любой из которых состоит из 2х-8ми разрядных регистров, которые можно независимо адресовать символическими именами AH, BH, CH, DH соответственно AL, BL, CL, DL, регистры указателей 16ти разрядны и предназначены для хранения адресов операндов при косвенной адресации. Все РОН можно использовать для хранения данных, но в некоторых командах допускается использование определенного регистра по умолчанию.

AX – при умножении и делении, в воде и выводе слов (16разрядов);

AL – умножение-деление, ввод-вывод байтов, десятичной коррекции;

AH – умножение-деление битов;

BX – используется при трансляции;

CX – счетчик циклов и указатель длины слов в строчных командах;

CL – хранение числа сдвигов в командах;

DX – умножение и деление слов, ввод и вывод с косвенной адресацией;

SP – операции со стеком;

SI/DI – при строковых операциях.

В отличии от 8ми разрядного МП в регистре SP хранится смещение последней занятой ячейки стека, а полный адрес стека определяется SS:SP. Сегментных регистры определяют начальные адреса 4х сегментов памяти в зависимости от типа обращения к памяти (выборка команд, адресация переменной, стековые операции и т.д.).

Регистр флагов хранит признаки результата выполнения арифметических и логических операций и управляющие признаки, которые можно установить и сбросить программно.

AF – флаг вспомогательного переноса или заема из младшей тетрады в старшую из разряда F3 в F4, используется в командах обработки двоично-десятичных чисел.

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

OF – флаг переполнения устанавливается при выходе знакового результата за границу диапазона.

CF – флаг знаки. Для положительных чисел CF=0, для отрицательных CF=1.

PF – флаг четности, устанавливается при четном количестве единиц в результате операции.

ZF – флаг результата = 0. Устанавливается при 0ом результате операции.

DF – флаг управления направлением обработки массивов данных в строковых командах. При DF=1 индексные регистры SI и DI, которые принимают участие в строковых командах автоматически декрементируются, а при DF=0 инкрементируются.

IF – флаг разрешения прерывания IF=1, разрешается выполнение маскированных аппаратных прерываний.

TF – флаг трассировки (пошагового режима) при его установке после выполнения каждой команды вызывается внутреннее прерывание.

Для формирования 20ти разрядного адреса в 16ти разрядном процессоре используют информацию 2х-16ти разрядных регистров.

В МП i8086 20ти разрядный адрес формируется из 2х-16ти разрядных адресов, которые называются логическими. Первый логический адрес 16ти разрядный, заполненный 0000 представляет собой начальный адрес сегмента емкостью 64 Кбайта.

Второй логический адрес определяет смещение в сегменте, т.е. расстояние от начала сегмента до адресованной ячейки, если это расстояние = 0000, то адресуется первая ячейка сегмента, т.о. логическое адресное пространство разделено на блоки соседних адресов емкостью 64 Кбайта.

Получают 20ти разрядный физический адрес.

Пример:

Сегментный подход к организации памяти удобен еще и потому, что память обычно логически делится на области кода (программная память) данных и стека.

Физический 20ти разрядный адрес ячейки памяти формирется из 2х-16ти разрядных адресов: адреса сегмента (seg) и исполнительного адреса (смещение EA), которые суммируются со смещение на 4 разряда влево.

Смещение адреса сегмента на 4 разряда влево эквивалентно уменьшению на 2^4, т.е. физический адрес: 16*Seg+EA.

В качестве первого логического адреса сегмента используется содержимое одного из 4х сегментных регистров: CS, SS, DS, ES.

CS: Второй логический адрес EA зависит от сегмента, так в сегменте кодов используется содержимое указателя команд (CS, IP). В сегменте данных значение EA зависит от средства адресации операнда. В сегменте стека для указания 2го логического адреса используется содержимое (SS:SP, SS:BP).

Преобразованиелогических адресов в физические всегда однозначно, т.е. в паре сегмент: EA соответствует единственный адрес.

Обратное преобразование не является однозначным. Физический адрес можно использовать: 64Кб/16=4086

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.

Соседние файлы в папке ОТВЕТЫ МП