Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Лекции - Микропроцессорные устройства - файл 1.doc


Лекции - Микропроцессорные устройства
скачать (3874.5 kb.)

Доступные файлы (1):

1.doc3875kb.16.11.2011 12:20скачать

содержание
Загрузка...

1.doc

  1   2   3   4   5
Реклама MarketGid:
Загрузка...
Оглавление конспекта лекций по дисциплине "Микропроцессорные устройства"



  1. Архитектура микро – ЭВМ.

  2. Системы счисления.

2.1 Основные понятия.

2.2 Двоичная система счисления.

2.3 Шестнадцатеричная система счисления.

2.4 Двоичные числа в дополнительном коде.

2.5 Арифметика в дополнительном коде.

3. Архитектура микропроцессора.

4. Программирование микропроцессора.

4.1 Языки программирования.

4.2 Структура и типы команд.

4.3 Способы адресации данных.

4.3.1. Неявная адресация.

4.3.2. Регистровая адресация

4.3.3. Непосредственная адресация.

4.3.4. Прямая адресация.

4.3.5. Косвенная адресация.

    1. Команды передачи данных.

4.4.1. Команды общего назначения.

4.4.2. Команды работы со стеком.

4.5. Арифметические команды.

4.5.1. Команды двоичной арифметики.

4.5.2. Команды десятичной арифметики.

4.6. Логические команды.

4.6.1. Команды манипуляции битами.

4.6.2. Команды сдвига.

4.7. Команды передачи управления

4.8. Команды работы с подпрограммой.

4.9. Прочие команды

5. Функциональные блоки МП.

5.1. Арифметико–логическое устройство.

5.1.1 Сумматоры.

5.1.2. Операции (функции) АЛУ.

5.2. Устройство управления.

5.3. Контроль и защита информации.

6. Интерфейс микро-ЭВМ.

6.1. Интерфейс 8-разрядного микропроцессора.

6.2. Компоненты для организации системного интерфейса.

6.3. Способы обмена данными в микро-ЭВМ.

6.3.1. Общая программная модель периферийного устройства.

6.3.2. Программно-управляемая передача данных.

6.3.3. Передача данных с использованием системы прерываний.

6.3.4. Организация прямого доступа к памяти.

6.3.5. Параллельная передача данных.

6.3.6. Последовательная передача данных.


Введение


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

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

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

В 1623 году учёный В. Шикард создал машину, умеющую складывать и вычитать числа.

1671 год – Лейбниц создал устройство способное выполнять четыре основные арифметические операции – арифмометр.

1938 год – немецкий учёный Цузе К. создаёт электромеханическую машину, арифметическое устройство которой было выполнено на базе реле. Машина оперировала уже не десятичными, а двоичными числами.

1944 год – американец Г. Айкен спроектировал вычислительную машину, которая также работала на реле. Однако она оперировала с данными в десятичной форме. Из-за большого веса механических частей эти машины были бесперспективны.

Нужно было искать новую, более технологичную элементную базу. И тогда вспомнили об изобретении Л. Фореста, который в 1906 году создал трёхэлектродную вакуумную лампу, названную триодом. В силу своих свойств она стала наиболее естественной заменой реле.

1946 год – в США была создана первая универсальная ЭВМ. Она содержала 18 тысяч ламп, весила 30 тонн, занимала площадь 200м2 и потребляла огромную мощность. В этой ЭВМ всё ещё использовались десятичные операции и программирование осуществлялось путём коммутации разъемов и установки переключателей.

1951 год – создана первая ЭВМ с двоичной арифметикой и оперативной памятью. После создания этой ЭВМ человечество осознало огромные возможности вычислительных машин. Данная отрасль начала развиваться быстро и динамично. До середины 80-х годов процесс эволюции вычислительной техники принято делить на поколения.

1-е поколение (1945–1954гг) ЭВМ этого поколения работали на ламповой элементной базе, из-за чего поглощали огромное количество энергии и были ненадёжны.

2-е поколение (1955-1964гг) Смену поколений определило появление новой элементной базы: вместо лампы стали применять транзисторы. Тогда в архитектуре ЭВМ появились аппаратные средства для выполнения операций с плавающей точкой. Были разработаны команды для вызовов подпрограмм. Появились языки высокого уровня – Algol, Fortran, Cobol.

3-е поколение (1965-1970гг) Переход от транзисторов к интегральным микросхемам. Это повысило производительность ЭВМ и снизило их габариты и стоимость. ЭВМ стали активно использоваться для управления различными технологическими процессами в системах сбора и обработки информации. Увеличение мощности ЭВМ сделало возможным одновременное выполнение нескольких программ на одной ЭВМ. Для координации одновременно выполняемых действий создаются первые операционные системы. Разрабатываются пакеты прикладных программ для различных областей деятельности человека.

4-е поколение (1970-1984гг) Переход на новую элементную базу: интегральные схемы сменили большие и сверхбольшие интегральные схемы (БИС и СБИС). На этом этапе развития ЭВМ появляются первые микропроцессоры.

^ В общем случае под процессором понимают функциональный блок ЭВМ, предназначенный для логической и арифметической обработки информации.

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

Первый МП i4004 был создан фирмой INTEL на рубеже 70-х годов. Он представлял собой 4-разрядное параллельное вычислительное устройство. Фирма INTEL продолжила интенсивные разработки и один из её проектов привёл к успеху, предопределившему будущий путь развития вычислительной техники. В 1972 году был создан 8-ми разрядный МП i8008. На базе этого МП появляются первые персональные ЭВМ. В 1976 году фирма INTEL выпустила 16-ти разрядный микропроцессор i8086. Он имел разрядность регистров в 16 бит и системной шины адреса в 20 бит. За счёт этого мог адресовать до 1 Мбайт оперативной памяти. В 1982 году был создан i80286. Этот МП представлял улучшенный вариант i8086. Он поддерживал уже несколько режимов работы: реальный, когда формирование адреса производилось по правилам i8086, и защищённый, который аппаратно реализовывал многозадачность и управление виртуальной памятью. i80286 имел также большую разрядность шины адреса – 24 разряда против 20 у i8086, и поэтому он мог адресовать до 16 Мбайт оперативной памяти. Первые компьютеры на базе этого МП появились в 1984 году. На этом 4-е поколение развития ЭВМ завершилось.

5-е поколение ЭВМ началось в 1985 году, когда фирма INTEL представила первый 32 разрядный МП i80386. Этот МП поддерживал новый режим работы – режим виртуального i8086. i80386 был первым МП в котором использовалась параллельная обработка данных. Одновременно осуществлялись: доступ к памяти и устройствам ввода-вывода, размещение команд в очереди для выполнения, их декодирование, преобразование линейного адреса в физический.

Вскоре после МП i386 появился i486. В его архитектуре получили дальнейшее развитие идеи параллельной обработки. Устройство декодирования и исполнения команд было организованно в виде пятиступенчатого конвейера, на котором в различной стадии исполнения могло находиться до 5 команд.

С 1993 года стали выпускаться МП Intel Pentium. Эти МП продолжают развитие идей параллельной обработки. В устройство декодирования и исполнения команд бал добавлен второй конвейер. Теперь два конвейера вместе могли исполнять две инструкции за такт. Процессор стал более интеллектуальным. В него была добавлена возможность предсказания ветвлений, в связи, с чем значительно возросла эффективность исполнения нелинейных алгоритмов.

В 1970 году Маршиан Эдвард Хофф из фирмы Intel сконструировал интегральную схему, аналогичную по своим функциям центральному процессору большой ЭВМ – первый МП Intel-4004, который в 1971 году был выпущен в продажу.

Схема прибора насчитывала 2300 транзисторов. Тактовая частота 750 кГц. МП обрабатывал 4-х разрядные данные. В систему команд входило всего 46 инструкций. Этот МП не имел операций логической обработки данных. Модуль i4004 не имел возможности останова и обработки прерываний. Шина адреса ША была мультиплексирована с шиной данных ШД. 12 разрядный адрес передавался по 4-е разряда.

1972 год МП i8008 – первый 8-ми разрядный прибор. Его производительность по сравнению с предшествующим МП возросла в 2,3 раза.

1974 год создан МП i8080. Кристалл содержал 6000 транзисторов. Тактовая частота 2 МГц. Были разделены ША и ШД. Использовалась многоуровневая система прерываний по вектору. В i8080 появился механизм прямого доступа к памяти.

1978 год – МП 8086, первый 16-ти разрядный МП.

1982 год – МП 80286.

1985 год – МП 80386. Этот МП насчитывал уже 275000 транзисторов, число которых, по сравнению с первым i4004 увеличилось более чем в 100 раз. Это был 32-х разрядный многозадачный процессор с возможностью одновременного выполнения нескольких программ.

1989 год – МП 80486.

1993 год – МП Pentium.

1995 год – Pentium Pro.

1997 год - Pentium II.

1999 год - Pentium III.


^ 1. Архитектура микро-ЭВМ.

ЭВМ – комплекс технических средств, объединенных общим управлением и предназначенных для автоматического выполнения преобразований цифровых кодов в соответствии с заданным алгоритмом.

Алгоритм – совокупность точных предписаний (команд), выполнения которых ЭВМ приводит к решению поставленной задачи, путём преобразования исходных цифровых кодов в цифровые коды результата. Здесь рассматривается простая гипотетическая машина, обладающая типичными чертами многих микро-ЭВМ.

ЭВМ в общем виде является электронной системой сбора, хранения, накопления, переработки и выдачи цифровой информации.

Основными свойствами ЭВМ являются программное управление, алгоритмическая универсальность, высокие точность и скорость вычисления.

^ Структура ЭВМ – абстрактная модель, устанавливающая состав, порядок и принципы взаимодействия основных функциональных частей ЭВМ без учёта их реализации.

Функциональная часть ЭВМ – составная часть ЭВМ, имеющая определённое функциональное назначение.

^ Микро-ЭВМ – это вычислительная машина, имеющая разрядность в один или два байта, малые габариты и низкую стоимость.

Разрядность – количество разрядов в цифровых кодах, обрабатываемых в данной машине.

Байт (byte) – наименьшая адресуемая единица информации, состоящая из восьми двоичных разрядов называемых битами.

^ Бит (binary digit) – двоичная цифра 0 или 1, или двоичный разряд.

Типовая архитектура микро-ЭВМ (назовём её базовой) содержит пять основных элементов:

  1. устройства ввода;

  2. устройство управления;

  3. устройство арифметических действий (оба входят в состав микропроцессора);

  4. память;

  5. устройства вывода.

Такая структура функциональных элементов называется архитектурой ЭВМ. Она изображена на рисунке 1.

Несмотря на успехи, достигнутые в области технологии, существенных изменений в базовой структуре и принципах работы ЭВМ не произошло.

Архитектура ЭВМ – размещение соединённых между собой элементов, отражающее структуру связей, что влияют на основные характеристики ЭВМ.нутые в области технологии, существенных измененийвбазовой структуреунке 1.

а выглядит так.иний)


^ Основными частями МП являются АЛУ, устройство управления и регистры.

Под архитектурой ЭВМ понимается абстрактное представление машины в терминах основных функциональных модулей, языка ЭВМ, структуры данных.

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

Физически реализованные в виде соответствующей аппаратуры функциональные блоки ЭВМ называются аппаратными средствами.

Другая структурная схема микро-ЭВМ показана на рисунке ниже.

равилам е вычислительное устройсто. фирма еской и арифметической обработки информа была бесперспективной.

ерации - арифмочипр.ия вычислительной техники.

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

Модель в процессе проектирования преобразуется в структуру микро-ЭВМ, определяющую состав, назначение и взаимные связи необходимых аппаратурных компонентов, реализующих архитектуру.

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

В приведённых схемах (рис.1 и 2) обработку информации осуществляет МП, синхронизируемый тактовыми импульсами устройства синхронизации. Чтобы все части (устройства) микро-ЭВМ работали в правильной последоват


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

^ Обмен информацией между МП и остальными блоками микро-ЭВМ осуществляется по трём магистралям (называемых ещё шинами): адресной, данных и управляющей.

Шина(BUS) – группа линий передачи информации объединенных общим функциональным назначением. Например: шина данных, шина адресов, шина управления.

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

Магистраль (шина) адреса (МА) служит для передачи кода адреса, по которому проводится обращение к устройствам памяти, ввода-вывода или другим внешним устройствам, подключённым к МП.

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

Шина адреса – система линий передачи адресов.

Обрабатываемая информация и результаты вычислений передаются по магистрали данных (МД).

^ Данные – сообщения, закодированные в двоичной форме. Данные ещё не являются собственно информацией.

Шина данных – система линий передачи данных внутри МП и вне него.

^ Информация – смысл, придаваемый данным.

Магистраль управления (МУ) передает управляющие сигналы на все блоки ЭВМ, настраивая на нужный режим устройства, участвующие в выполнении команды.

^ Шина управления – система линий передачи сигналов управления.

Физические устройства, приведённые на рисунке 1, являются аппаратными средствами. Для их полезного использования занесённая в память программа предписывает МП что он должен делать.

^ Программные средства – это общий термин, охватывающий все программы.

Когда программа помещается в память постоянно, она располагается в устройстве, называемом постоянным запоминающим устройством (ПЗУ). ПЗУ является кристаллом программируемой интегральной микросхемы с неизменяемой программой. В ПЗУ хранится программное обеспечение, используемое при работе с каждой программой (например, программа инициализации ЭВМ, управляющие программы).

Память изменяющихся данных называют оперативным запоминающим устройством (ОЗУ) и составляется также из ИС. Для хранения данных и команд служит одна и та же память (ОЗУ). Это позволяет повысить эффективность использования достаточно дорогостоящей памяти ЭВМ.

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

Порт (контроллер) – специальная микросхема, с помощью которой МП связывается с внешними устройствами.

^ Порты ввода данных преобразуют их из последовательной формы в параллельную.

Порты вывода наоборот преобразуют информацию в последовательную форму.

^ Последовательная передача данных – поразрядная передача данных.

Параллельная передача данных – одновременная передача двух и более разрядов.

^ Линии передачи данных обычно буферируются, прежде чем они будут подключены к соответствующим портам.

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

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

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

Некоторые устройства ввода и вывода снабжаются специальными схемами, выполняющие специальную процедуру управления обменом, при котором набор управляющих сигналов, т.е их интерфейс (интерфейс ВУ) несовместим с системным интерфейсом микро-ЭВМ. Для сопряжения микро-ЭВМ с ВУ (системного интерфейса с интерфейсом ВУ) используют контроллеры ВУ. МП имеет возможность «спросить» ВУ, готово ли оно к обмену информации, и данные передаются только при утвердительном ответе.

Одно из основных различий между ЭВМ – это организация системных шин, обеспечивающих связь между отдельными блоками ЭВМ. Самой популярной структурой шин, которая используется во многих ЭВМ, является структура с общей шиной. В этом случае, при наличии общей шины для всех блоков ЭВМ, возникает задача подключения выходов нескольких элементов к одной шине. Известны три способа решения задачи: логическое объединение, объединение с помощью схем с открытым коллектором и объединение с использованием схем с тремя состояниями. Рассмотрим эти способы и проанализируем возможность их применения при организации внутренних и внешних общих шин.

О
рганизация общей шины может быть понята из рисунка.

Логические элементы с открытым коллектором не должны иметь встроенного нагрузочного резистора соединённого с источником питания, поскольку в противном случае параллельное соединение указанных резисторов при объединении нескольких выходов приведёт к недопустимому увеличению тока через открытый транзистор. Поэтому такой нагрузочный резистор должен быть один на всю сборку. Однако конечное значение сопротивления закрытого транзистора и соответственно заметное уменьшение отношения сопротивления параллельной группы закрытых транзисторов к сопротивлению нагрузочного резистора Rk фактически ограничивает область применимости этого способа организации. Логическим его развитием, устраняющим этот недостаток, является использованием в качестве нагрузочного резистора нелинейного элемента. Здесь объединение происходит с использованием схем с тремя состояниями.

На схеме рисунка в качестве нагрузочных элементов используются транзисторы VT1 и VT3. При подключении к общей шине выхода первого элемента (Э1) открытый транзистор VT1 и закрытый VT2 определяют состояние общей шины, соответствующее логической 1.

П
ри нулевом значении на выходе Э1 транзистор VT1 закрывается, а VT2 открывается, поэтому напряжение на общей шине будет соответствовать логическому нулю.

Однако в отличие от обычных ключевых схем в данном случае возможен третий режим, при котором оба транзистора одного каскада (VT1 и VT2 или VT3 и VT4) закрыты. В этом случае со стороны выхода каскад обладает высокими сопротивлениями и поэтому не влияет на состояние общей шины. Например, при подключении общей шины к Э1 в таком состоянии должен находиться каскад, подключающий к общей шине Э2. Если в состоянии высокого сопротивления будут находиться оба каскада, то общая шина может использоваться произвольно любыми внешними по отношению к МП устройствами. Схемы с тремя состояниями применяются при организации канала прямого доступа к памяти.

1)При организации внутренних шин МП, как правило, используется объединение с помощью схем с общим коллектором (ОК).

2)При организации внешних по отношению к МП магистралей, как правило, используется логика с тремя состояниями.

нсовельными частями системы согласовднияданныхся, прежде чем они будут подключачены

н, охватывающий все программы.отка с тремя состояниями.единение с помощью схем с общим коллектором (ОК).р,чае со стороны выхода каскад обладает высокими сопротивлениями и поэтому не влияет на состояние общей шины. Работа микро-ЭВМ.

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

1. Нажать клавишу с буквой «А» на клавиатуре.

2. Поместить букву «А» в память микро-ЭВМ.

3. Вывести букву «А» на экран дисплея.

Это типичная процедура ввода-запоминания-вывода, рассмотрение которой даёт возможность пояснить принцип использования различных устройств, входящих в микро-ЭВМ.

На рисунке ниже приведена диаграмма выполнения процедуры ввода-запоминания-вывода. Прежде всего, нужно рассмотреть содержимое программной памяти.

Команды уже загружены в первые места ячеек памяти. Хранимая программа содержит следующие команды:

  1. Ввести данные из порта ввода 1.

  2. Запомнить данные в ячейке памяти 200.

  3. Переслать данные в порт вывода 10.

В нашей программе всего три команды, хотя под них отведены шесть ячеек памяти. Это связано с тем, что команда разбивается на части. Первая часть команды 1- «ввести данные». Во второй части команды 1 указывается, откуда нужно ввести данные (из порта 1). Первая часть команды, предписывающая конкретное действие, называется операцией, а вторая часть – операндом. Коды операции и операнда размещаются в отдельных ячейках памяти. На рисунке код операции хранится в ячейке 100, а код операнда – в ячейке 101.

В МП выделены два новых блока – регистры: аккумулятор и регистр команд.

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

  1. МП выдаёт адрес 100 на шину адреса. По шине управления поступает сигнал, устанавливающий ИС памяти программ в режим считывания.

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

  3. МП выдаёт адрес 101 на шину адреса. Шина управления активизирует вход считывания из программной памяти (память переводится в режим считывания).

  4. Из памяти 101 на ШД выставляется операнд «Из порта 1». Код операнда (адрес порта 1) передаётся по ШД к МП и направляется в регистр команд. Теперь МП декодирует полную команду («Ввести данные из порта 1»).

  5. МП, используя ША и ШУ, связывающие его с устройством ввода, открывает порт 1. Цифровой код буквы «А» передаётся в аккумулятор внутри МП и запоминается.

  6. МП обращается к ячейке 102 по ША. ШУ используется для перевода памяти программ в режим считывания.

  7. Код команды «Запомнить данные» передаётся по ШД и пересылается в МП, где помещается в регистре команд.




  1. М


    П декодирует эту команду и определяет, что для неё нужен операнд. Он выставляет на шину данных адрес 103 и приводит в активное состояние вход считывания микросхем памяти.

  2. Из памяти программ на ШД выставляется код адреса ячейки памяти 200. МП принимает этот операнд и помещает его в регистр команд. Команда «поместить данные в ячейку 200» полностью извлечена и декодирована.

  3. Теперь начинается процесс выполнения команды. МП пересылает адрес 200 на ША и активизирует вход записи, относящийся к памяти данных.

  4. МП направляет хранящуюся в аккумуляторе информацию в память данных. Код буквы «А» передаётся по ШД и записывается в ячейку 200 этой памяти. Выполнена вторая команда. Процесс запоминания не разрушает содержимого аккумулятора. В нём по прежнему находится код буквы «А».

  5. Теперь МП обращается к ячейке памяти 104 для выбора очередной команды и переводит память программ в режим считывания.

  6. Код команды вывода данных пересылается по ШД к МП, который помещает его в регистр команд, декодирует и определяет, что нужен операнд.

  7. МП выдаёт адрес 105 на ША и устанавливает память программ в режим считывания.

  8. Из памяти программ по ШД к МП поступает адрес порта 10, который далее помещается в регистр команд.

  9. МП дешифрирует полную команду «Вывести данные в порт 10». С помощью ША и ШУ, связывающих его с устройством вывода, МП открывает порт 10, пересылает код буквы «А» (всё ещё находящийся в аккумуляторе) по ШД. Буква «А» выводится через порт 10 на экран дисплея.

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

МП является ядром системы и осуществляет управление всеми операциями. Его работа представляет последовательную реализацию микропроцедур выборки-дешифрации-исполнения. Однако фактическая последовательность операций в МПС определяется командами, записанными в памяти программ. Таким образом, в МПС микропроцессор выполняет следующие функции:

- выборку команд программы из памяти;

- дешифрацию команд;

- выполнение арифметических, логических и других операций, закодированных в командах;

- управление пересылкой информации между регистрами и памятью, между устройствами ввода\вывода;

- отработку сигналов от устройств ввода\вывода, в том числе реализацию прерывания этих устройств;

- управление и координацию работы основных узлов МП.


ую реализациюи вывода информации.

налоги МП поступает адрес порта 10,которыйстр команд,декодируетодит памятьпрограммлает адрес 200 на ША иактивизирует входкоманда "хем памяти.

ываетя по ШД к МП и направляется в регистр команд. я в режим считывания).

амяти программ в режим считывания.

довательность действий:

^ 2. Системы счисления.


2.1 Основные понятия.

Системой счисления называется совокупность правил записи чисел.

Системы счисления подразделяются на позиционные и непозиционные. ^ Обе системы счисления используют определённый набор символов – цифр.

Последовательное сочетание цифр образует число.

Непозиционные системы счисления появились раньше позиционных. Они характеризуются тем, что в них символы не меняют своего значения в зависимости от местоположения в записи числа.

Классическим примером такой системы счисления является римская. В ней для записи чисел используются буквы латинского алфавита. При этом буква I означает единицу, V – пять, Х – десять, L – пятьдесят, С – сто, D – пятьсот, М – тысячу. Для получения значения числа в римской системе счисления необходимо просто просуммировать полученные эквиваленты входящих в него цифр. К примеру, 577 это DLXXVII. Другой пример CDXXIX =429.

^ В позиционной системе счисления количество символов в наборе равно основанию системы счисления.

Место каждой цифры в числе называется позицией.

^ Номер позиции символа в числе называется разрядом.

В системе счисления с основанием p любое число можно представить в виде:

A(p)= an-1*pn-1+an-2*pn-2+…+a1*p1+a0*p0 , (1)

где p – основание системы счисления (некоторое целое положительное число); а – цифра данной системы счисления; n – число разрядов кода.

Для получения числа в некоторой позиционной системе счисления необходимо сложить произведения значений цифр на степени оснований, показатели которых равны номерам разрядов (нумерация разрядов начинается с нуля). Все системы счисления, которые будут рассматриваться ниже, являются позиционными. Число А(p) представляется в виде последовательных цифр, А(p)n-1an-2...a1a0. При этом всегда выполняется неравенство ak<p. Видно, что одно и то же число А в зависимости от основания p при кодировании формируется из разного количества разрядов.

Для кодирования заданного диапазона чисел в машине в зависимости от выбранной системы счисления требуется разное количество оборудования.

Определим, при каком основании p0 для представления данного множества чисел М требуется наименьшее количество аппаратуры (аппаратных затрат). Множество чисел М=pn. Предположим, что объём используемых электронных элементов для обработки каждого разряда пропорционален основанию системы счисления. Тогда для реализации множества чисел М=pn потребуется N электронных схем: N=α*p*n, где α – коэффициент пропорциональности, p- основание системы счисления, n – количество разрядов. Так как lnM=n*lnp => n=lnM/lnp. Подставим в выражение для N значение n. N=α*p*lnM/lnp. Поскольку N есть функция p при прочих постоянных значениях, для определения p0 найдём и приравняем нулю первую производную:

=> lnp-1=0, p0=e.

Таким образом, наиболее экономичным основанием позиционной системы счисления является число e =2.718 .

Из целочисленных значений оснований ближайшими к значению e являются цифры 2 и 3. Код с нецелым основанием e технически нереализуем. По соображениям простоты технической реализации явное преимущество на стороне кода с p =2. Для него необходимы дискретные элементы с двумя устойчивыми состояниями. ованием стемы счисления является число

скольку p.выражение для ения, М=ов для обработки каждого разряда пропорционален основаниюппаратных затрат).


^ Типы данных

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

^ Информация – это смысл, который приписывается данным посредством соглашений, принятых при их представлении. Данные являются изображением информации.

Содержание (смысл) сообщения - это информация, а знаки, в которые сообщение воплощено, - это данные.

В ЭВМ используют двоичное представление информации, поэтому символы «0» и «1» являются единственными элементами машинного алфавита. Принято называть символы «0» и «1» двоичными цифрами или разрядами и связывать с ними понятие бита как минимальной единицы представления информации. Восьмиразрядное двоичное число называют байтом. Формат байта представлен на рисунке .

ся позицией.

имволов в наборе равно основанию системы счисления.




Разряды байта разделены на две группы по четыре двоичных разряда – тетрады.

Иногда к восьми информационным разрядам байта присоединяется девятый разряд. Он используется для контроля правильности передачи байтовой информации в ЭВМ путём определения чётности или не чётности «1» в коде. При значении этого разряда, равном 1, число единиц в передаваемых данных нечётное, а при равном 0 – чётное. Этот метод получил название контроля чётности.

Слово – это последовательность знаков, которую удобно рассматривать как одно целое.

С точки зрения размерности МП поддерживает следующие основные типы данных (рисунок 2)




В данном случае слово – это последовательность из двух байт, имеющих последовательные адреса. Размер слова – 16 бит; биты нумеруются от 0 до 15. Байт, содержащий 15-й бит называется старшим байтом. Младший байт содержит нулевой бит.

Двоичное слово – последовательность из четырёх байт (32 бита), расположенных по последовательным адресам. Нумерация от 0 до 31. Слово, содержащее нулевой бит, называется младшим словом, а слово, содержащее 31-й бит, – старшим словом.


^ 2.2 Двоичная система счисления

В этой системе используются только два символа. Это хорошо согласуется с техническими характеристиками цифровых схем, имеющих только два устойчивых состояния. В качестве символов служит 0 и 1. Основание p =2. Количественный эквивалент некоторого целого n-значного двоичного числа вычисляется согласно формуле (1)

А(2)n-1*2n-1+an-2*2n-2+…+a1*21+a0*20 (2)

^ Каждой позиции (разряду) присваивается определённый вес. Вес разрядов равен основанию системы счисления возведённому в степень соответствующую номеру разряда. Рассмотрим двоичное число 10100111. Вычислим количественный эквивалент этого числа. Согласно формуле (2) получим:

1*27+0*26+1*25+0*24+0*23+1*22+1*21+1*20=128+32+4+2+1=167.


^ 2.3 Шестнадцатеричная система счисления

Данная система счисления имеет следующий набор цифр {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}. Основание системы p =16.

Следующая таблица содержит представления десятичных чисел из диапазона 0-15 в двоичной и шестнадцатеричной системах счисления.


Десятичные числа

Двоичные числа

Шестнадцатеричные числа

0

0000

0

1

0001

1

2

0010

2

3

0011

3

4

0100

4

5

0101

5

6

0110

6

7

0111

7

8

1000

8

9

1001

9

10

1010

A

11

1011

B

12

1100

C

13

1101

D

14

1110

E

15

1111

F


Таблицей удобно пользоваться при преобразованиях чисел из одной системы счисления в другую. Количественный эквивалент некоторого целого n-разрядного числа вычисляется по формуле (1).

A(16)=an-1*16n-1+an-2*16n-2+…+a1*161+a0*160

Например, число F45ED23C в десятичной системы счисления будет следующим:

15*167+4*166+5*165+14*164+13*163+2*162+3*161+12*160 = 4099854908.


^ Десятичная система счисления

Данная система счисления имеет следующий набор цифр {0,1,2,3,4,5,6,7,8,9}, основание степени p =10. Количественный эквивалент некоторого целого n-значного десятичного числа вычисляется согласно формуле

A(10)=an-1*10n-1+an-2*10n-2+…+a1*101+a0*100


^ Перевод чисел из одной системы счисления в другую

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

^ Преобразование десятичных чисел в двоичные

Алгоритм преобразования следующий:

  1. Разделить десятичное число А на основание системы счисления (в данном случае на 2).

  2. Запомнить частное q и остаток а. Если в результате первого шага частное q0, то принять его за новое делимое и отметить остаток а, который будет очередной значащей цифрой числа. Далее вернуться к шагу 1, на котором в качестве делимого (десятичного числа) участвует полученное на шаге 2 частное.

  3. Если в результате шага 1 частное q =0, алгоритм прекращается.

  4. Выписать остатки в порядке обратном их получению. Тем самым будет составлен двоичный эквивалент исходного числа.

Рассмотрим два примера.

1.Преобразовать десятичное число 57 в двоичное число

Шаг Деление Частное Остаток

1 57/2 28 1 (МЗР)

2 28/2 14 0

3 14/2 7 0

4 7/2 3 1

5 3/2 1 1

6 1/2 0 1 (СЗР)


МЗР – младший значащий разряд.

СЗР – старший значащий разряд.

В процессе преобразования следует учитывать, что частное от деления 1 на 2 составляет нуль, а остаток равен 1.

Результат: 5710=1110012.


2. Преобразуем десятичное число 134 в двоичное число.

Шаг Деление Частное Остаток

1  134/2 67 0 (МЗР)

2 67/2 33 1

3 33/2 16 1

4 16/2 8 0

5 8/2 4 0

6 4/2 2 0

7 2/2 1 0

8 1/2 0 1 (СЗР)

Результат: 13410=100001102


^ Перевод чисел из десятичной системы счисления в

шестнадцатеричную

Практическое использование шестнадцатеричной системы объясняется тем, что число 16 есть число 2 в четвёртой степени. ^ Поэтому шестнадцатеричную цифру используют как средство сокращённой записи 4-разрядного двоичного кода. Общая идея преобразования аналогична рассмотренной выше.

  1. Разделить десятичное число А на 16. Запомнить частное q и остаток а.

  2. Если в результате шага 1 частное q0, то принять его за новое делимое, записать остаток и вернутся к пункту 1.

  3. Если частное q=0, то прекратить работу алгоритма.

  4. Выписать остатки в порядке, обратном их получению. Тем самым составляется шестнадцатеричный эквивалент исходного десятичного числа.


1.Требуется преобразовать число 3276710 в 16-ную систему счисления.

Шаг Деление Частное Остаток

1 32767/16 2047 1510=F16 (МЗР)

2 2047/16 127 1510=F16

3  127/16 7 1510=F16

4 7/16 0 7 (СЗР)

Результат: 3276710=7FFF16


2.Преобразовать число 634.

Шаг Деление Частное Остаток

1  634/16 39 101016 (МЗР)

2 39/16 2 7

3 2/16 0 2 (СЗР)

Результат: 63410=27А16


^ Перевод дробных чисел.

Любое дробное число в системе счисления с основанием p можно представить в виде

A(p)=an-1*pn-1+an-2*pn-2+…+a1*p1+a0*p0+a-1*p-1+a-2*p-2+…+a-m*p-m

Рассмотрим операции перевода чисел на примерах.

^ Перевести в десятичное представление дроби в двоичной системе счисления.

Как и в десятичной системе в двоичной системе для отделения дробной части от целой используется точка. Каждая позиция справа от этой точки имеет свой вес – вес разряда дробной части числа. Значение веса в этом случае равно основанию двоичной системы, возведённому в отрицательную степень. Такие веса – это дроби 1/2, 1/4, 1/8, 1/16, 1/32 и т.д., которые могут быть записаны как 2-1, 2-2, 2-3, 2-4 и т.д.

Преобразовать число:

110100,01001011=1*25+1*24+0*23+1*22+0*21+0*20+0*2-1+1*2-2+

+0*2-3+0*2-4+1*2-5+0*2-6+1*2-7+1*2-8


Перевести в десятичное представление дробь в шестнадцатеричной системе счисления:

1DF2,A1E416=1*163+13*162+15*161+2*160+10*16-1+1*16-2+14*16-3+

+4*16-4


^ Рассмотрим проблему представления десятичных дробей в двоичной и шестнадцатеричной системах счисления.

Общий алгоритм перевода десятичной дроби в другую систему счисления можно представить следующей последовательностью шагов.

  1. Выделить целую часть десятичной дроби и выполнить её перевод в выбранную систему счисления по алгоритмам, рассмотренным выше;

  2. Выделить дробную часть и умножить её на основание выбранной новой системы счисления;

  3. В полученной после умножения десятичной дроби выделить целую части и принять её в качестве значения первого после запятой разряда числа в новой системе счисления;

  4. Если дробная часть значения, полученного после умножения, равна нулю, то прекратить процесс перевода! Процесс перевода можно также прекратить в случае, если достигнута необходимая точность вычисления. В противном случае перейти к шагу 3.

Пример: Преобразовать десятичное число 0,3437510 в двоичное:

2*0,34375=0,6875 0 (СЗР)

2*0,6875=1,375 1

2*0,375=0,75 0

2*0,75=1,5 1

2*0,5=1 1 (МЗР)

Результат: 0,3437510=0,010112


Перевести в двоичную систему счисления десятичную дробь108,406

  1. Переводят целую часть десятичной дроби в двоичную систему счисления:

10810=11011002

  1. Переведём дробную часть в двоичную систему:

2*0,406=0,812 0 (СЗР)

2*0,812=1,624 1

2*0,624=1,248 1

2*0,248=0,496 0

2*0,496=0,992 0

2*0,992=1,984 1

2*0,984=1,968 1

2*0,968=1,936 1

…………………

Результат перевода следующий: 108,40610 1101100,011001112есс ная часть значения, полученного послеумножения, равна нулю, то прекратить процесс перевода! оритмам, рассмотренным выше;


Рассмотрим следующий пример: преобразовать десятичное число 634,328125 в шестнадцатеричное

63410=27А16

Перевод дробной части

16*0,328125=5,25 5(СЗР)

16*0,25=4,0 4(МЗР)

0,32812510=0,5416

Общий результат: 634,32812510=27А,5416


^ Двоичная арифметика


Сложение и вычитание двоичных чисел без знака.

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

Рассмотрим пример:

Слагаемое 99…………………01100011

+

Слагаемое 95…………………01011111

Сумма 194………………..11000010

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

В ближайший старший разряд.

+

Слагаемое

0

1

Слагаемое

0

0

1

1

1

0

Двоичное вычитание подобно десятичному. Таблица 2 иллюстрирует правило двоичного вычитания. Из таблицы 2 следует, что, если уменьшаемое меньше вычитаемого, то имеет место заём. Это происходит в том случае, когда из нуля, содержащегося в двоичном разряде, вычитается единица. Благодаря заёму единицы из ближайшего старшего разряда в одноимённом разряде результата получается единица.


-

Вычитаемое

0

1

Уменьшаемое

0

0

1

1

1

0



Пример:

Уменьшаемое 109………………..01101101

-

Вычитаемое 49………………...00110001

Разность 60………………..00111100


^ 2.4 Двоичные числа в дополнительном коде

До сих пор предполагалось, что числа положительные. Выясним, как представляются в ЭВМ числа со знаком. Если нужно использовать числа со знаком, то применяется специальный дополнительный код, что упрощает аппаратные средства ЭВМ (а именно АЛУ). Формирование дополнительного кода, или сокращённого дополнения, состоит из двух операций: получения обратного кода и добавления единицы. Рассмотрим следующую таблицу.

8-разрядное двоичное число

Десятичный эквивалент

Двоичного числа со знаком (отрицательное число в дополнительном коде)

Двоичного числа без знака

00000000

+0

0

00000001

+1

1

00000002

+2

2

………….

…………..

………..

01111101

+125

125

01111110

+126

126

01111111

+127

127

10000000

-128

128

10000001

-127

129

10000010

-126

130

10000011

-125

131

…………

…………….

……………

11111101

-3

253

11111110

-2

254

11111111

-1

255


Как видно из таблицы, посредством 8 бит можно представить в двоичной форме десятичные числа от -128 до +127. В этой таблице показаны два типичных для МП способы использования двоичных кодов: как двоичных чисел со знаком, так и без знака. Левый столбец содержит двоичные числа от 00000000 до 11111111, правый столбец – их десятичные эквиваленты от 0 до 255, полученные в предположении, что рассматриваются числа без знака. В центральном столбце находятся десятичные эквиваленты двоичных чисел левого столбца, полученные в предположении, что отрицательные числа записывались в дополнительном коде.

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

В среднем столбце таблицы отрицательные числа содержат 1 в восьмом разряде.

Получение дополнительного кода числа продемонстрируем на следующем примере:

Число 410 в двоичной форме 00000100

Обратный код числа 410 11111011

+

Добавляем к обратному коду 12 00000001

Число 410 в дополнительном коде 11111100

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

Ещё пример: число 910 представим в дополнительном коде.

00001001

11110110

+

00000001

11110111


^ 2.5 Арифметика в дополнительном коде


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

^ Если требуется определить абсолютное значение результата, то его необходимо представить в обратном коде, а затем прибавить единицу.

Используя дополнительный код и сумматор МП выполняет вычитание, которое происходит следующим образом. Определяется дополнительный код вычитаемого и производится сложение этого кода с уменьшаемым. Если разность – число положительное (бит старшего разряда равен 0), то бит переноса необходимо отбросить; полученная последовательность битов и есть двоичный код результата. Если разность – число отрицательное (бит старшего разряда равен 1), то она представлена в дополнительном коде.

Рассмотрим примеры.

  1. Вычислить разность чисел 58-23

а) Определение дополнительного кода числа 23

число 2310 00010111

обратный код 11101000

+

прибавляем единицу 00000001

дополнительный код числа 2310 11101001

б) Вычисление разности.

число 5810 00111010 58

+ -

11101001 23

Разность 3510 100100011 35

Получили положительный результат, поэтому единица переноса в девятый разряд отбрасывается.

  1. Вычислить разность чисел 26-34

а) Определение дополнительного кода числа 34

число 3410 00100010

обратный код числа 11011101

+

прибавляем единицу 00000001

дополнительный код числа 3410 11011110

б) Вычисление разности:

26 00011010

- +

34 11011110

-08 11111000

Видно, что разность получилась в форме дополнительного кода, поскольку в старшем разряде 1.

в) Определение абсолютного значения разности.


дополнительный код разности 11111000

обратный код 00000111

+

прибавляем единицу 00000001

абсолютное значение разности 810 00001000


  1. Сложить десятичные числа -210 и -510

210 00000010

обратный код 11111101

+

00000001

дополнительный код -210 11111110


510 00000101

11111010

+

00000001

дополнительный код 510 11111011

Числа в дополнительном коде складываются

-2 11111110

+ +

-5 11111011

-7 1 11111001




Старший бит


Старший бит результата является переполнением 8-разрядного регистра и им пренебрегаем. В 8-ом разряде стоит 1. Значит, получено отрицательное число в дополнительном коде.

Найдём абсолютное значение разности.

11111001

00000110

+

00000001

абсолютное значение разности 710 00000111


^ Двоичные умножение и деление

При умножении одного числа на другое одно из чисел называется множимым, другое – множителем. Ниже изображена таблица двоичного умножения. Аналогичную таблицу десятичного умножения, состоящую из 10 строк и 10 столбцов, мы знаем наизусть. По сравнению с ней таблица двоичного умножения чрезвычайно проста: в умножении участвуют цифры, принимающие только два значения – 0 или 1, в результате умножения перенос не возникает никогда.

*

Множимое

0

1

Множитель

0

0

0

1

0

1


Воспользуемся таблицей для вычисления произведения двоичных эквивалентов десятичных чисел 17 и 12.

Множимое 1710 10001

*

Множитель 1210 01100

00000

00000

10001

10001

00000

Результат 20410 11001100


Первые два частных произведения включают только нули, так как множители – значения первого и второго разрядов – равны нулю. Третье частное произведение – копия множимого. Разница между ними заключается лишь в том, что копия сдвинута относительно множимого на два двоичных разряда влево, поскольку для получения этого частного произведения в качестве множителя используется значение третьего разряда. Четвёртое частное произведение также является копией множимого смещённой относительно последнего на три двоичных разряда влево. Все остальные произведения – нули. Сложение всех частных произведений в данном примере не сопровождается переносом, однако возникновение последнего не исключено.

Обычно умножение и деление как отдельные операции в МП не предусматриваются. Эти операции выполняются с использованием специальной подпрограммы. Программно умножение реализуется путём сдвига и сложения. Перечислим правила этого способа.

  1. Формирование первого частного произведения. Если значения младшего значащего разряда множителя равно 0, то и результат равен 0. Если значение этого разряда равно 1, то результат является копией множимого.

  2. Правило сдвига. При использовании очередного разряда множителя для формирования частичного произведения производится сдвиг множимого на один разряд влево.

  3. Правило сложения. Каждый раз, когда значение разряда множителя равно 1, к результату необходимо прибавлять множимое, расположенное в позиции, определённой правилом сдвига.

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

Продемонстрируем правила сдвига и сложения на рассмотренном примере умножения 1710 и 1210:

10001

*

^ 01100

10001 множимое, сдвинутое влево на 2 разряда

10001 множимое, сдвинутое влево на 3 разряда

11001100ять множимое расположено сумма сдвинутых множимых


Ещё пример: 93*45=4185

93 01011101

* *

45 00101101

01011101

01011101

01011101

01011101

418510= 1000001011001


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

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


Рассмотрим пример.

Разделить число 20410 на 1210

11001100 1100 11001100=20410

1100 10001 1100=1210

01100 10001=1710

01100

0

Двоичное деление начинается с анализа делимого и делителя. Сразу обнаруживаем, сто делитель точно укладывается в первые четыре цифры делимого, а потому записываем цифру 1 в поле, предоставленное для формирования частного. Умножаем делитель на 1 и вычитаем результат из 1100. Разность равна нулю, т.е. меньше делителя, а поэтому процесс деления можно продолжить. Объединяем нуль остатка со значением следующего разряда делимого, равным 1. Поскольку делитель укладывается ноль раз в числе 1, записываем 0 в поле представления частного, а число 1 объединяем со следующей цифрой делимого и т.д. Описываемая процедура продолжается до тех пор, пока делимое не оказывается исчерпанным.


^ Арифметика повышенной точности

Обсудим, как в МП реализуется арифметика повышенной точности. При работе с МП часто выясняется, что длина слов, которыми он оперирует, недостаточна для достижения требуемой точности вычислений. Например, 8-разрядный МП использует числа в диапазоне от -128 до +127. Для большинства задач такой диапазон неприемлем. Используя два 8-битовых слова с представлением отрицательных чисел в дополнительном коде, получим диапазон от

-32768 до 32767. Для решения многих задач указанной двойной точности этого вполне достаточно. Однако иногда требуется тройная точность вычислений: 1 бит для знака и 23 бит для абсолютной величины числа. Диапазон чисел в случае тройной точности следующий: -8388608 до 8388607, включая 0. Однако при работе с арифметикой повышенной точности требуется большой объем памяти для хранения данных и более интенсивная работа МП. Пусть например, необходимо использовать арифметику тройной точности в 8-разрядной вычислительной системе. Для этого необходимо сначала произвести обращение к младшему значащему байту каждого числа. После сложения двух байтов результат записывают в память, а возможные при этом переносы подлежат временному хранению. Затем из памяти извлекают следующие по значимости байты и складывают, прибавляя биты переноса, полученные в результате предыдущей операции сложения. Результат записывают в память на место специально зарезервированное для среднего байта суммы. Наконец из памяти извлекают старшие значащие байты, складывают их, к сумме добавляют биты переноса, полученные при предыдущей операции сложения, и результат записывают в область памяти, зарезервированную для старшего значащего байта суммы. Таким образом, требуется в три раза больше времени и объема памяти.


^ Арифметика чисел с плавающей точкой

Не все проблемы могут быть разрешены при использовании арифметики с повышенной точностью. До сих пор рассмотрение было ограничено целыми числами. Действия с дробными числами осуществляются в арифметике чисел с плавающей точкой (запятой), позволяющей МП отслеживать положение десятичной точки. Это достигается благодаря использованию представления десятичных дробей в нормализованном виде, т.е. в виде мантиссы, диапазон значений которой от 0,1 до 1, и порядка - показателя степени числа 10. Например, число 50 представляется как 0,5*102, а число -750 как -0,75*103.

Числа с плавающей точкой хранятся в МП так же как и целые числа. Записывается мантисса со знаком и порядок со знаком. Представление числа в форме с плавающей точкой в 8-разрядном МП можно изобразить следующим образом.



Адрес байта

Содержимое байта

М+3 (4-й байт)

+ или – 7-битовый порядок

М+2 ( 3-й байт)

+ или – 7 старших битов мантиссы

М+1 (2-й байт)

8 средних битов мантиссы

М (1-й байт)

8 младших битов мантиссы



Число в форме с плавающей точкой занимает 4 байт. Мантисса представлена как число тройной точности и занимает три байта. Старший бит третьего байта знаковый. Четвёртый байт занят порядком: 7 бит величины и 1 бит знака. Арифметика чисел с плавающей точкой позволяет оперировать числами от

-223×2127 до (223-1)×2127. Следовательно, диапазон чисел очень большой.

^ 3. Архитектура микропроцессора


3.1 Внутреннее построение микропроцессора

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

Архитектура МП – функциональные возможности аппаратных средств МП, используемые для представления данных, машинных операций, описания алгоритмов и процессов вычислений.

^ С точки зрения пользователя-программиста под архитектурой МП в общем случае понимают совокупность следующих компонентов и характеристик:

- разрядность адресов и данных;

- состав и назначение программно-доступных регистров;

- формат и система команд;

- режим адресации памяти;

- способы машинного представления данных разного типа;

- структура адресного пространства;

- способы адресации внешних устройств и средств выполнения операций ввода-вывода;

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

Какими бы ни были рассматриваемые МП, касающаяся их информация содержит много общего. Типовая документация содержит информацию о структуре ИС, схеме выводов ИС и назначение каждого из них. Схематизируется архитектура МП, описываются его основные свойства. Одновременно даются временные диаграммы и состав команд МП.

Структурная схема МП даёт наглядное представление о его архитектуре и позволяет рассмотреть работу МП по выполнению двух основных функций: обработке и манипулированию данными.

Использование структурной схемы МП существенно облегчает понимание того, как МП решает поставленные задачи. Рассмотрим структурную схему, представленную на рисунке 1. Изображённый 8-разрядный МП приведен в качестве типичного примера и не является какой-либо конкретной моделью, выпускаемой промышленностью.

Структурная схема МП даёт наглядное представление о его архитектуре и позволяет рассмотреть работу МП по выполнению двух основных функций: обработке и манипулированию данными.




Рис.1 Структурная схема 8-разрядного МП

Использование структурной схемы МП существенно облегчает понимание того, как МП решает поставленные задачи. Рассмотрим структурную схему представленную на рис. 1

^ МП состоит из трёх основных блоков: АЛУ, нескольких регистров и устройства управления. Для передачи данных между этими блоками МП используется внутренняя шина данных. Поясним назначение отдельных элементов структурной схемы.

^ 3.2 Арифметико-логическое устройство (АЛУ)

АЛУ выполняет обработку данных. Типичными операциями, выполняемыми АЛУ являются сложение, инвертирование, сдвиг, а также операции инкремента и декремента. АЛУ содержит два входных порта и один выходной порт. Оба входных порта снабжены буферами, роль которых выполняют регистры временного хранения данных – буферные регистры. В конечном итоге АЛУ выполняет все арифметические и логические операции. Каждый порт соединён со своим буферным регистром, способным хранить для АЛУ одно слово данных. АЛУ принимает данные или с внутренней шины данных МП, или из специального регистра, именуемого аккумулятором. Единственный выходной порт АЛУ пересылает слово данных в аккумулятор. АЛУ оперирует одним или двумя словами в зависимости от вида выполняемой операции.

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

^ 3.3 Регистры МП

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

3.4 Аккумулятор

Аккумулятор – главный регистр МП при различных манипуляциях с данными. Для выполнения любой операции над данными прежде всего их необходимо поместить в аккумулятор. Данные поступают в него с внутренней шины данных МП. В свою очередь аккумулятор может посылать данные на эту шину. На пути прохождения данных из аккумулятора в АЛУ находится буфер аккумулятора. Большинство арифметических и логических операций осуществляется путём использования АЛУ и аккумулятора. Любая из таких операций над двумя словами данных предполагает размещение одного из них в аккумуляторе, а другого в памяти или в каком-либо регистре. Результат операции АЛУ размещается в аккумуляторе. При этом исходное содержимое аккумулятора теряется.

Количество разрядов аккумулятора соответствует разрядности шины данных МП, т.е. 8 бит. Некоторые МП имеют аккумуляторы двойной длины или группу аккумуляторов.

^ 3.5 Счетчик команд (Program Counter (РС) - программный счётчик)

Для корректного выполнения программы её команды должны поступать в строго определённом порядке. Счетчик команд следит за тем, какая команда выполняется, а какая подлежит выполнению следующей. Счетчик команд содержит адрес ячейки памяти следующей для выполнения команды. Для МП адресующихся к памяти объёмом 64 кбайта число разрядов счетчика команд равно 16. Счетчик команд (РС) соединён с внутренней шинной данных МП. Теоретически этот регистр может получать данные об адресах программы из любого блока МП, подключенного к внутренней шине. Однако в действительности данные поступают в счетчик команд из памяти ЭВМ.

Для правильного понимания излагаемого отметим следующее. После извлечения команды из памяти МП автоматически даёт приращение содержимому счетчика команд. Это приращение СК получает как раз в тот момент, когда МП начинает выполнять команду, только что извлеченную из памяти. С этого момента СК указывает, какой будет следующая команда. СК содержит адрес следующей выполняемой команды на протяжении всего времени выполнения текущей команды. Перед выполнением программы СК загружается адресом ячейки памяти, содержащей первую команду программы.


^ 3.6 Регистр адреса памяти (регистр адреса)

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

В течение выборки команды из памяти регистр адреса памяти и счетчик команд имеют одинаковое содержимое, то есть регистр адреса памяти указывает местоположение команды извлекаемой из памяти. После декодирования команды счетчик команд получает приращение, а регистр адреса памяти приращения не получает. При выполнении команды содержимое регистра адреса памяти зависит от выполняемой команды. Если МП должен произвести ещё одно обращение к памяти, то регистр адреса памяти подлежит вторичному использованию при обработке команды. Для некоторых команд адресация к памяти не требуется. При обработки таких команд регистр адреса памяти используется только один раз - в течении подцикла выборки команды из памяти. Регистр адреса памяти располагает количеством разрядов, достаточным для адресации любой области памяти ЭВМ. Для памяти 64 кбт-16 разрядов.


^ 3.7 Регистр команд

В ходе извлечения команды из памяти её первый байт (КОП) передаётся в 8-разрядный регистр команд. Содержимое регистра доступно тогда дешифратору команд. Регистр команд предназначен исключительно для хранения текущей выполняемой команды. Эта функция реализуется МП с начала цикла выборка-выполнение, называемый также машинным циклом. Регистр команд соединён с внутренней шиной данных, однако он может только принимать данные – посылать данные на шину он не может.

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


^ 3.8 Регистр состояния

Наличием регистра состояния подлинная ЭВМ отличается от калькулятора. Данный регистр предназначен для хранения результатов некоторых проверок состояния аккумулятора, осуществляемых в процессе выполнения программы. Регистр состояния содержит пять одноразрядных индикаторов, содержимое этих индикаторов используется условными ветвлениями программ.

На рис. 2 показаны разряды регистра состояния. ^ Этот регистр ещё называют регистром признаков.


S

Z

0

AC

0

P

1

CY

Бит переноса

Бит четности


Бит вспомогательного переноса


Бит нулевого результата

Бит отрицательного результата


Бит CY указывает, что последняя выполненная операция сопровождалась переносом или заёмом. Значение разряда переноса устанавливается равным 1, если в результате сложения двух чисел имеет место перенос из 8-го разряда результата. Отрицательный перенос фиксируется в бите CY при вычитании большего числа из меньшего.

Пример:


11101110

11110000

111011110

результат

перенос


Бит нулевого результата Z принимает единичное значение, если после окончания операции во всех разрядах результата обнаружены двоичные нули. В противном случае бит Z содержит нуль.

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


11011110

11011010

110111000

результат отрицательный

перенос


Бит четности Р поверяет число единиц в аккумуляторе. Если это число четное то в бите P устанавливается 1, если число нечетное – бит Р сбрасывается в 0.

Бит вспомогательного переноса АС показывает перенос из третьего разряда аккумулятора в четвёртый. Работает аналогично индикатору CY. Значение этого бита используют команды десятичной арифметики.

Не все разряды регистра состояния используются МП. В неиспользуемых 8-разрядах постоянно записаны двоичные единицы или нули. Слово состояния МП – это содержимое регистра состояния. Содержимое регистра состояния может быть загружено во внутреннею шину данных МП. Однако он не имеет возможности принимать данные, поступающие по шине.


^ 3.9 Буферные регистры АЛУ

Буферные регистры предназначены для временного хранения одного слова данных. Один из этих регистров называется буфером аккумулятора АЛУ. В оба буферных регистра данные поступают с внутренней шины данных МП. В буфер аккумулятора данные могут поступать и с выхода аккумулятора. Необходимость в таких регистрах вызвана отсутствием в АЛУ своего запоминающего устройства. В состав АЛУ включены только комбинационные схемы и поэтому при поступлении исходных данных на входы АЛУ немедленно появляется результат на его выходе. Результат помещается в аккумулятор. Комбинационные операции – операции, при которых информационные сигналы на выходах операционного блока представляют собой некоторую функцию входных сигналов и существуют до тех пор, пока поданы на входы операционного блока входные сигналы.

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


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

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

^ Регистры общего назначени BC, DE, HL могут быть использованы как шесть 8-разрядных или три 16-разрядные пары регистров в зависимости от текущей выполняемой команды. Выборка команд длиной 2 и 3 байт производится с участием регистров W и Z. Первый байт команды заносится в регистр команд, второй - в регистр W, а третий - в регистр Z. Регистры W и Z программно недоступные. Пара HL обычно используется для указания адреса. Остальные РОН являются регистрами хранения данных. В нашем случае АЛУ не помещает данные в РОН, поэтому они не обладают возможностями аккумулятора. РОН представляет собой сверхоперативную память МП.


^ 3.11 Указатель стека (Stack Pointer - (SP))

Указатель стека (SP) представляет 16-разрядный регистр, который содержит адрес последнего помещенного в стек байта. Указатель стека декрементируется при каждом помещении в стек и инкрементируется при каждом извлечении из него.


^ Стек – это область памяти, специально выделяемая для временного хранения данных программы. Отличительной особенностью стека является особая организация обращения к нему со стороны МП. Запись и чтение данных в стеке осуществляется в соответствии с принципом LIFO (Last In First Out) – «последним пришел, первым ушел». Таким образом, информация в стеке размещается в строгой последовательности – ячейка памяти, заполненная последней, считывается первой, а ячейка памяти заполненная первой извлекается последней. В ячейки стека информация заносится последовательно и извлекается в порядке обратном порядку занесения. Таким образом, стек функционирует как память с последовательным доступом. По мере записи данных в стек он растёт в сторону младших адресов. Эта особенность заложена в алгоритм команд работы со стеком. Концептуальная схема организации стека показана на рисунке.



Адрес

Содержимое


Вершина стека


Направления роста стека


Дно стека


Старшие адреса



Младшие

Адреса




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

^ Стек выполняется на некоторой выделенной области ОЗУ. В этом случае стек представляет память с последовательным доступом. Обращение и адресация к стеку производится через регистр указателя стека.

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

^ Вершиной стека называется адрес его последней загруженной ячейки памяти. Таким образом, указатель стека всегда содержит адрес его вершины. Начало стека в ОЗУ (его дно) определяется программистом путём записи в регистр SP адреса первой ячейки памяти стека. Вершина стека подвижна и её расположение определяется объёмом данных, загруженных в стек. Стек не имеет ограничений, за исключением тех, которые обусловлены наличием других программ в ОЗУ.


^ 3.12 Схема управления

Схема управления состоит из дешифратора команд и устройства управления и синхронизации. Одна из главных функций схемы управления – декодирование команды. Для этого служит дешифратор команд. Он декодирует команду, находящуюся в регистре команд и выдаёт сигналы, необходимые для выполнения команды, в устройство управления. Основу устройства управления МП составляют программируемые логические матрицы (ПЛМ). Дешифратор анализирует отдельные биты команды и передаёт код операции в устройство управления. Устройство управления получает сигналы от дешифратора команд для определения природы выполняемой команды. Устройство управления получает также информацию от регистра состояния в случае условного перехода. Сигналы управления и синхронизации передаются во все блоки МП для координации выполнения команд и управления внешними устройствами (ОЗУ, ПЗУ, УВВ).

^ Устройство управления связано с генератором тактовых импульсов, синхронизирующим во времени работу МП. Принимаемые тактовые сигналы схемой управления преобразуются в многофазные синхросигналы. В качестве ГТИ используют кварцевый генератор – внешний или внутренний, встроенный в МП. На рис. 1 линии управления изображены пунктиром. Эти линии соединяют систему управления со всеми узлами МП, а также с внешними блоками: памяти и ввода-вывода.


^ 4. Программирование микропроцессора

4.1. Языки программирования.

На своем рабочем уровне МП выполняет список операций, называемый машинной программой.

Машинная программа - программа, написанная на машинном языке.

^ Программа - упорядоченный список команд или операторов, выполняя которые микро – ЭВМ осуществляет решение задачи.

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

^ Операторы машинного языка записываются в двоичных кодах.

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

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

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

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

Используют следующие языки программирования МП:

  1. Язык низкого уровня – машинный язык;

  2. Язык типа АССЕМБЛЕР;

  3. Языки высокого уровня: Бейсик, Pascal, Фортран;

Достоинства программирования МП на машинном языке:

- минимальный объем памяти;

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

Недостатки:

- большая трудоемкость составления программ;

- большая вероятность ошибок и трудность их обнаружения;

- зависимость от типа применяемого МП.

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

Язык АССЕМБЛЕР наиболее широко распространен для программирования МП. В языке АССЕМБЛЕР каждая машинная команда МП обозначается мнемоническим символом, представляющим собой сочетание трех или четырех букв, являющихся первыми буквами полной записи наименования этих команд на английском языке.

Очевидно, что мнемоническое (символическое) кодирование названия и содержания команд легче запоминается, чем ничего не говорящее сочетание нулей и единиц, представляющее собой двоичное кодирование. Язык АССЕМБЛЕР дает инженеру возможность писать инструкции в мнемонической форме, так что названия инструкций могут ассоциироваться с реально выполняемыми операциями.

^ Мнемокод - последовательность букв, заменяющая полное слово или фразу, удобную для запоминания. АССЕМБЛЕР - это язык мнемокодов.

Трансляция - замена символов и синтаксиса исходного языка программирования символами и синтаксисом другого языка с сохранением содержания переводимых выражений.

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

^ Объектный код - команды программы, представленные на машинном языке. Одной команде языка АССЕМБЛЕР соответствует одна машинная команда. Трансляция с языка АССЕМБЛЕР в машинный код называется ассемблированием.

Чтобы упростить и ускорить программирование микро – ЭВМ (МП), используют языки высокого уровня. Перевод текста программ с языков высокого уровня на язык машинных команд осуществляется транслятором.

^ В этом случае транслятор может работать в одном из двух режимов: либо в режиме интерпретатора, либо в режиме компилятора.

Транслятор – это программа перевода исходной программы на языке высокого уровня в объектную программу на машинном языке. Различают трансляторы интерпретирующего типа и компилирующего типа.

Интерпретатор работает в процессе выполнения программы. Каждая строка программы на языке высокого уровня преобразуется в машинные команды непосредственно перед её выполнением.

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

Компилятор во многом похож на ассемблер. Но если ассемблер преобразует в машинный код команды на языке АССЕМБЛЕРА, то компилятор производит те же действия над командами на языках высокого уровня.

Конфигурация системы транслирующих программ показана на рисунке.





Программа, подаваемая на вход транслятора, называется исходной программой. Выходом является двоичная форма программы, называемая объектной программой. Каждая из этих форм программы является языком, поскольку имеется некоторый набор синтаксических правил и заранее заданный набор символов.


Компилятору не всегда отдается предпочтение. Следует учитывать, что у микро – ЭВМ весьма ограниченный объем памяти. Программы с компилятором выполняются быстрее, чем в случае применения интерпретатора. Однако программа-компилятор значительно больше, чем программа - интерпретатор и требует для своего разрешения больший объем памяти. Только большие ЭВМ всегда позволяют использовать компиляторы. Компилятор в микро – ЭВМ используется редко, так как компилятор для одного и того же языка значительно сложнее интерпретатора и хранение программ компилятора в памяти микро – ЭВМ увеличивает объем памяти и удорожает стоимость систем.


^ 4.2 Структура и типы команд.

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

^ Группа команд, которые может выполнять данный МП, называется ег составом команд.

Составы команд не являются нормализованными. Это неудобство связано как с индивидуальным подходом, так и с различиями архитектуры и назначений МП.

Длина команды 8 – ми разрядного МП может быть 8, 16, или 24 бит, но в любом случае будет кратной длине слова данных.

Команды МП должны содержать информацию двух видов. Во – первых, команда должна сообщить МП, что делать. Во – вторых команда должна указывать адрес (месторасположение) обрабатываемых данных. Поэтому команда состоит из двух частей: кода операции (КОП) и операнда.

Код операции (КОП) - комбинация двоичных знаков или ее мнемоническое обозначение, указывающее на определенную операцию, которую должен выполнить МП. КОП сообщает МП, что делать.

^ Адрес указывает местоположение данных, участвующих в операции.

Операндом называют данные, над которыми выполняются операции, указанные в команде.

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

Формат машинной команды показан на рисунке. Из рисунка видно, что длина команды 8 – разрядного МП может равняться 8, 16 или 24 бит.

Система команд МП Intel 8080 содержит 237 команд. Современные МП имеют более 300 команд. С появлением каждой новой модели МП количество его команд, как правило, возрастает, отражая тем самым архитектурные новшества, отличающие эту модель от ее предшественниц. Набор машинных команд можно структурировать по группам. Приведем функциональную классификацию команд типового МП.






В большинстве случаев названия команд МП характеризуют их назначение. После ознакомления с описанием команд необходимо усвоить следующие характеристики:

1. Назначение.

2. Используемые способы адресации.

3. Мнемоническое обозначение.

4. Представление действий, выполняемых командой, с помощью логических символов.

5. Длину команды.

6. Воздействие результата выполнения команды на регистр состояния МП.


^ 4.3 Способы адресации

Чтобы МП оказался в состоянии выполнить команду, ему необходимо сообщить месторасположение данных, которые обрабатывает команда.

^ Тип обращения к данным называют способом адресации. Способ адресации - способ определения места операнда команды.

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

^ Рассмотрим пять основных способов адресации: неявная, регистровая, непосредственная, прямая и косвенная.

Два первых способа адресации (регистровый и неявный) касаются операндов, расположенных в самом МП. Три последних способа адресации (непосредственный, прямой и косвенный) относятся к операндам, расположенным вне МП, т.е. в ячейках памяти или портах ВВ.

Разные ЭВМ имеют различные способы адресации. Набор способов адресации зависит от специализации ЭВМ. Кроме пяти основных в ЭВМ применяют и другие способы адресации. Например: страничная адресация, индексная адресация, относительная адресация.


^ Регистровая адресация.

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


Пример. На рисунке команда пересылки данных из регистра А в регистр В состоит из кода операции, адреса источника данных (регистр А) и адресат приемника данных ( регистр В).


0

1

0

0

0

1

1

1

4 7


КОП адрес регистра В адрес регистра А

Это команда MOV B,A её код 47.


Команда пересылки содержимого регистра А в регистр В, в которой использована регистровая адресация.

Адрес регистра А – 111, адрес регистра В – 000. Адреса источника и приемника данных встроены в команду и таким образом указаны неявно. Команды с регистровой адресацией отличаются наибольшей величиной быстродействия.

Под номера регистров в поле команды отводятся определенные разряды: три младших (В 2 – В 0 ) кодируют номер регистра – источника, содержащего операнд, а три средних (В 5 - В 3 ) - номер регистра – приемника, в который засылается результат операции.


Принято следующее кодирование регистров:


000 – регистр В 100 - регистр Н

001 – регистр С 101 - регистр L

010 – регистр D 110 – ячейка памяти

011 - регистр Е 111 - аккумулятор

^ Неявная адресация.

Примерами команд с неявной адресацией могут служить следующие команды: STC, CMA, NOP.

STC – установить индикатор переноса.

CMA – инвертировать содержимое аккумулятора.

NOP - нет операций.

^ При выполнении команд с неявной адресацией не требуется искать данные или адреса в других регистрах МП, в памяти или портах УВВ.

Например, команда STC устанавливает индикатор переноса ( CY) 1 без воздействия на другие регистры или индикаторы. Таким образом, команда STC относится только к индикатору переноса и никакому другому регистру или памяти.

Команды с неявной адресацией занимают 1 байт памяти.


^ Непосредственная адресация.

Код операции команды с непосредственной адресацией размещается в первом байте. Сразу же за КОП следуют данные, занимающие 1 или 2 байт. Эти данные берутся не из памяти. Их предоставляет программист при записи команды. Следовательно, при использовании данного способа адресации не требуется указание адреса памяти, необходим только код операции, после которого записываются данные. Таким образом, операнд следует в команде непосредственно за КОП. Рассмотрим пример этого типа команд. Команда загрузить данные в SP - это трехбайтовая команда.


2000

КОП 31 Н

2001

0111 0000

2002

000 0010
младший байт загрузить SP



000 0010


01110000


старший байт

после операции

В рассматриваемом случае 2 байт данных берутся в памяти программы и помещаются в указатель стека. Младший байт 01110000 загружен первым, затем старший байт 000 0010.

Операции, задаваемые первым байтом команды (кодом операции), МП выполняет над данными, представленными её вторым байтом.


^ Прямая адресация.

Команды с прямой адресацией имеют длину, равную 2 или 3 байт. Первый байт предназначен для КОП, второй и третий - для адреса.

Адрес указывает область памяти, в которой находятся подлежащие обработке данные. Совместное использование 2 и 3 байтов команды позволяет адресоваться к любой из 65536 областей памяти.

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

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

Примером использования такой адресации может служить команда записи содержимого аккумулятора в память по адресу 000ЕН. Этот адрес занимает второй и третий байты команды. Байты команды показаны на рисунке.



КОП М А

0ЕН

00Н



2 – й байт

3 – й байт


^ Косвенная адресация.

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

Указанная адресация называется косвенной. При косвенной адресации соответствующая команда указывает, в какой регистровой паре размещается адрес местоположения данных в памяти.

Рассмотрим пример: загрузить в аккумулятор данные из ячейки памяти, адрес которой находится в регистровой паре НL. Обратимся к следующему рисунку.


До операции После операции


Память данных передать аккумулятор





2080H

11110000
  1   2   3   4   5



Скачать файл (3874.5 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации