Архитектура

ОГЛАВЛЕНИЕ

Об Ассемблере. 5

Архитектура. 7

Машина Фон Неймана. 7

Общие архитектурные свойства и принципы.. 8

(принципы фон Неймана) 8

Память. 8

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

Арифметико–Логическое Устройство. 10

Иерархия памяти.. 10

Режимы работы микропроцессора. 12

Организация памяти.. 12

Описание набора регистров микропроцессора. 16

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

Пользовательские регистры.. 16

Регистры общего назначения. 17

Сегментные регистры.. 19

Регистры состояния и управления. 19

Системные регистры микропроцессора. 22

Форматы и типы данных, поддерживаемые микропроцессором.. 26

Типы данных. 26

Директивы резервирования и инициализации данных. 28

Разработка программ на языке Assembler с использованием пакета TASM... 32

Синтаксис ассемблера. Лексемы ассемблера. Классификация операндов. 35

Синтаксис ассемблера. 35

Лексемы ассемблера. 35

Операнды.. 36

Типы операторов ассемблера. 38

Директивы сегментации.. 43

Стандартные директивы сегментации. 43

Упрощенные директивы сегментации. 46

Структура программы на ассемблере. 49

Прерывания и их использование. 50

Обработка прерывания в реальном режиме. 51

Основные функции прерывания MS DOS 21h. 53

Прерывание BIOS 10h. 54

Структура машинной команды.. 56

Способы задания операндов команды.. 59

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

Косвенная базовая (регистровая) адресация. 61

Косвенная базовая (регистровая) адресация со смещением.. 62

Косвенная индексная адресация со смещением.. 62

Косвенная базовая индексная адресация. 62

Косвенная базовая индексная адресация со смещением.. 62

Команды пересылки данных. 64

Команды пересылки данных общего назначения. 64

Особенности применения команды mov. 65

Команда XCHG (eXCHanGe) 66

Команды ввода-вывода в порт.. 67

Команды работы с адресами и указателями памяти. 67

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

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

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

Вычитание двоичных чисел. 71

Умножение чисел без знака. 74

Умножение чисел со знаком.. 75

Деление чисел без знака. 75

Деление чисел со знаком.. 76

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

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

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

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

Команды линейного сдвига. 82

Команды циклического сдвига. 84

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

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

Безусловные переходы.. 88

Условные переходы.. 90

Организация циклов. 93

Организация длинных циклов. 94

Цепочечные команды.. 95

Операция пересылки цепочек. 98

Операция сравнения цепочек. 99

Операция сканирования цепочек. 102

Загрузка элемента цепочки в аккумулятор. 104

Перенос элемента из аккумулятора в цепочку. 105

Ввод элемента цепочки из порта ввода-вывода. 107

Вывод элемента цепочки в порт ввода-вывода. 108

Массивы.. 108

Описание и инициализация массива в программе. 109

Доступ к элементам массива. 110

Двухмерные массивы.. 114

Типовые операции с массивами. 116

Cтек.. 118

Понятие. 118

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

Использование стека. 124

Процедуры.. 124

Понятие. 124

Описание процедуры.. 124

Размещение в сегменте кода. 125

Вызов процедур. 126

Возврат из процедур. 126

Параметры процедур. 126

Передача параметров через регистры.. 127

Передача параметров по значению.. 127

Передача параметра по ссылке. 128

Передача параметров через стек. 129

Макросредства языка ассемблера. 130

Псевдооператоры equ и =.. 131

Макрокоманды.. 133

Макродирективы.. 142

Директива IRP. 143

Директива IRPC.. 144

Директивы условной компиляции. 144

Директивы компиляции по условию.. 144

Директивы IF и IFE.. 145

Директивы IFDEF и IFNDEF. 147

Директивы IFB и IFNB.. 148

Директивы IFIDN, IFIDNI, IFDIF и IFDIFI. 148

Вложенность директив условной трансляции. 149

Директивы генерации ошибок. 150

Безусловная генерация пользовательской ошибки. 150

Условная генерация пользовательской ошибки. 151

Директивы.ERRB (ERRIFB) и.ERRNB (ERRIFNB) 151

Директивы.ERRDEF (ERRIFDEF) и.ERRNDEF (ERRIFNDEF) 152

Директивы.ERRDIF (ERRIFDIF) и.ERRIDN (ERRIFIDN) 152

Директивы.ERRE (ERRIFE) и.ERRNZ (ERRIF) 152

Константные выражения в условных директивах. 153

Дополнительное управление трансляцией. 154


Об Ассемблере

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

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

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

Типичный современный компьютер (на базе i486 или Pentium) состоит из следующих компонентов (рис. 1).

Рис. 1. Компьютер и периферийные устройства

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

Рис. 2. Структурная схема персонального компьютера

Какие ассоциации вызывает компьютер? К примеру, компьютер можно ассоциировать с человеком. Почему?

У компьютера есть органы восприятия информации из внешнего мира — это клавиатура, мышь, накопители на магнитных дисках. На рис. 2 эти органы расположены справа от системных шин. У компьютера есть органы “переваривающие” полученную информацию — это центральный процессор и оперативная память. И, наконец, у компьютера есть органы речи, выдающие результаты переработки. Это также некоторые из устройств справа.

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

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

Таким образом, внешне являясь полиглотом, компьютер понимает только один язык — язык машинных команд. Конечно, для общения и работы с компьютером, необязательно знать этот язык, но практически любой профессиональный программист рано или поздно сталкивается с необходимостью его изучения. Еще в 50-е годы программисты стали использовать для программирования символический аналог машинного языка, который назвали языком ассемблера.

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

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

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

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

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

Впервые понятие архитектура ЭВМ стало упоминаться с появлением машин 3-го поколения для их сравнительной оценки.

Архитектура

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

Понятие архитектуры является комплексным и включает в себя

ü структурную схему компьютера;

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

ü организацию и разрядность интерфейсов;

ü набор регистров;

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

ü способы представления и форматы данных;

ü набор машинных команд;

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

ü обработку прерываний.


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



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