Программная модель МП 8086

Лекции по дисциплине «Машинно-ориентированные языки»

Введение

Ассемблер - самый низкоуровневый язык программирования. Язык ассемблера - это символьная форма записи машинного языка. Его использование упрощает написание машинных программ. Именно машинный язык определяет логику работы процессора. Программа, написанная на ассемблере, отражает основные особенности архитектуры процессора: организацию памяти, способы адресации операндов, правила использования регистров и т. д.

Цель курса

освоение методики постановки, подготовки и решения научно-технических задач средствами машинно-ориентированных языков.

ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ

Архитектура ЭВМ - все, что характеризует компьютер с точки зрения его функциональных программно-управляемых свойств. Это абстрактное представление ЭВМ, которое отражает ее структурную, схемотехническую и логическую организацию. Понятие архитектуры является комплексным, в него входят:

- структурная схема ЭВМ;

- средства и способы доступа к элементам структурной схемы ЭВМ;

- организация и разрядность интерфейсов ЭВМ;

- набор и доступность регистров;

- организация и способы адресации памяти;

- способы представления и форматы данных ЭВМ;

- набор машинных команд ЭВМ;

- форматы машинных команд;

- правила обработки прерываний.

Оперативная память делится на ячейки размером в 8 разрядов. Ячейки такого размера принято называть байтами. Разряды байта нумеруются справа налево от 0 до 7.

Байт - это наименьшая адресуемая ячейка памяти (8 бит).

Слово (word) - это два соседних байта (2 байта, 16 разрядов).

Двойное слово (double word) - это четыре соседних байта (4, байта 32 разряда).

Четверное слово (8 байт, 64 разряда).

Параграф - 16 байт.

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

Флаг - это бит, принимающий значение 1, если выполнено некоторое условие, и значение 0 в противном случае.

Прерывание - событие, заставляющее процессор приостановить выполнение своей программы для выполнения затребованных действий (программные, аппаратные).

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

ПРОГРАММНАЯ МОДЕЛЬ МП 8086

Под программной моделью понимают программно доступные аппаратные средства (регистры), и к ним относятся 14 16-ти разрядных регистров.

Большинство регистров имеют функциональное назначение. Их можно разделить на шесть основных групп.

1. Регистры общего назначения (РОН);

2. Индексные регистры;

3. Указательные регистры;

4. Сегментные регистры;

5. Регистр - счетчик (указатель) команд;

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

1. РОН (AX, BX, CX, DX). Каждый из них может быть разделен на два 8-ми разрядных, функционирующих раздельно (AH, BH, CH, DH - High(старшие); AL, BL, CL, DL - Low (младшие)). В эти регистры можно записывать, читать и хранить любую информацию (любого вида - адреса, данные, коды команд). Иногда некоторые команды по умолчанию используют эти регистры по прямому назначению.

AX - применяется для хранения промежуточных данных. Используется для накапливания результата вычисления и тогда он называется аккумулятором.

BX - некоторые команды используют этот регистр для хранения начальных адресов структурированных данных и тогда он называется базовый регистр. Применяется для хранения базового адреса некоторого объекта в памяти.

CX - некоторые команды используют этот регистр по умолчанию для хранения счетчика циклов. Он называется регистр-счетчик.

DX - регистр данных; один единственный регистр, который используется некоторыми командами для хранения адреса порта при обмене с внешними устройствами. Хранит промежуточные данные аналогично AX.

2. Индексные регистры (SI, DI). Используются, в основном, в командах для хранения адресов пересылаемых структур данных из одной области памяти в другую, где в регистре SI хранится адрес источника, а в DI - адрес приемника.

3. Указательные регистры (SP, BP). В SP хранится адрес (вершина) начальной особой памяти, называемой стек. В BP хранится адрес смещения относительно вершины стека.

4. Сегментные регистры (CS, DS, ES, SS, GS, FS). Вся память компьютера может быть сегментирована, т. е. разбита на маленькие участки, размером 64 Кбайт, называемые сегментами. Одновременно процессор может работать только с 4-мя сегментами. Начальный адрес сегмента записан в сегментном регистре. Обычно сегментный регистр CS содержит адрес сегмента с машинными командами (кодовый сегмент). В сегмент DS записывается адрес сегмента данных текущей программы. В SS записывают адрес сегмента стека. В ES, GS, FS содержатся адреса дополнительных сегментов данных.

5. Счетчик (указатель) команд (IP) содержит смещение следующей подлежащей выполнению команды относительно содержимого регистра сегмента кода.

 

6. Регистр флагов (признаков) FLAGS. Предназначен для хранения признака результата. Признаки хранятся в регистре в виде единиц соответствующих разрядов, отсутствие признака 0. Каждый разряд отведен для определенного признака. В основном используется 9 флагов, которые собраны в 16-тиразрядный регистр.

        0F DF IF TF SF ZF   AF   PF   CF
                               

Флаги условий

CF - флаг переноса. Необходим в арифметических операциях над числами без знака. Например, если при сложении беззнаковых чисел получилась слишком большая сумма - с 1 переноса, которой нет места в ячейке, тогда флаг принимает значение 1, иначе 0.

OF - флаг переполнения. Необходим в арифметических операциях над числами со знаком. Если при сложении или вычитании знаковых чисел получился результат, по модулю превосходящий допустимую величину, тогда флаг принимает значение 1, иначе 0.

ZF - флаг нуля. Устанавливается 1, если результат команды оказался нулевым.

SF - флаг знака. Устанавливается 1, если в операции над знаковыми числами получился отрицательный результат.

PF - флаг четности. Равен 1, если в 8-ми младших битах результата очередной команды содержится четное количество двоичных единиц. Учитывается обычно в операциях ввода/вывода. Используется в тестировании микросхем.

AF - флаг дополнительного переноса. Фиксирует особенности выполнения операций над двоично-десятичными числами.

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

DF - флаг направления. Устанавливает направление просмотра строк в строковых командах. Если 0, строки просматриваются от начала к концу, если 1 - наоборот.

IF - флаг прерываний. При 0, процессор перестает реагировать на поступающие к нему прерывания, при 1 блокировка прерываний снимается.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: