ОГЛАВЛЕНИЕ
Об Ассемблере. 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-го поколения для их сравнительной оценки.
Архитектура
Архитектурой принято называть совокупность всех программно доступных аппаратных средств процессора.
Понятие архитектуры является комплексным и включает в себя
ü структурную схему компьютера;
ü средства и способы доступа к элементам структурной схемы;
ü организацию и разрядность интерфейсов;
ü набор регистров;
ü организацию и способы адресации памяти;
ü способы представления и форматы данных;
ü набор машинных команд;
ü форматы машинных команд;
ü обработку прерываний.