- •Введение
- •1. Особенности персонального компьютера
- •1.1. Оперативная память
- •1.2. Регистры
- •1.3. Представление данных
- •1.4. Представление команд
- •2. Язык ассемблера. Начальные сведения
- •2.1. Лексемы
- •2.2. Предложения
- •2.3. Директивы определения данных
- •2.4. Директивы эквивалентности и присваивания
- •2.5. Выражения
- •3. Пересылки. Арифметические команды
- •3.1. Обозначения операторов команд
- •3.2. Команды пересылки
- •3.3. Команды сложения и вычитания
- •3.4. Команды умножения и деления
- •3.5. Изменение размера числа
- •3.6. Примеры
- •3.7. Лабораторная работа № 1
- •4. Переходы. Циклы
- •4.1. Безусловный переход
- •4.2. Команды сравнения и условного перехода
- •4.3. Команды управления циклом
- •4.4. Вспомогательные операции ввода-вывода
- •4.5. Массивы
- •4.6. Лабораторная работа № 2
- •5. Программные сегменты
- •5.1. Сегментирование адресов в пк
- •5.2. Программные сегменты
- •5.3. Начальная загрузка сегментных регистров
- •5.4. Структура программы
- •6. Стек
- •6.1. Стек и сегмент стека
- •6.2. Стековые команды
- •6.3. Приемы работы со стеком
- •7. Процедуры
- •7.1. Дальние переходы
- •7.2. Подпрограммы-процедуры
- •7.3. Передача параметров через регистры
- •7.4. Передача параметров через стек
- •7.5. Локальные данные процедур
- •7.6. Лабораторная работа № 3
- •8. Ввод и вывод данных
- •8.1. Реализация основных операций ввода-вывода
- •8.2. Операции ввода-вывода
- •8.3. Пример структуры программы
- •Заключение
- •Библиографический список
- •Оглавление
- •Учебное издание
- •394026 Воронеж, Московский просп., 14
ФГБОУ ВПО
«Воронежский государственный технический
университет»
Н.И. Гундорова М.Ю. Сергеев
ОСНОВЫ ПРОГРАММИРОВАНИЯ
НА ЯЗЫКЕ АССЕМБЛЕРА ДЛЯ ПК:
ПРАКТИКУМ
Утверждено Редакционно-издательским советом
университета в качестве учебного пособия
Воронеж 2013
УДК 681.3
Гундорова Н.И. Основы программирования на языке ассемблера для ПК: практикум: учеб. пособие / Н.И. Гундорова, М.Ю. Сергеев. Воронеж: ФГБОУ ВПО «Воронежский государственный технический университет», 2013. 235 с.
Рассматриваются структура ПК на уровне регистров и памяти, основные операторы языка ассемблера.
Издание соответствует требованиям федерального государственного образовательного стандарта высшего профессионального образования по направлению 230100 «Информатика и вычислительная техника», профилю «Вычислительные машины, комплексы, системы и сети», дисциплине «Операционные системы».
Учебное пособие предназначено для студентов заочной и заочной сокращенной форм обучения.
Учебное пособие подготовлено в электронном виде в текстовом редакторе Microsoft Word 2003 и содержится в файле OS_AC_ZO.doc.
Табл. 9. Ил. 40. Библиогр.: 5 назв.
Научный редактор д-р техн. наук, проф. С.Л. Подвальный
Рецензенты: кафедра информатики и вычислительной
техники Международного института
компьютерных технологий (канд. техн. наук,
доц. И.Н. Крючкова);
д-р техн. наук, проф. В.Л. Бурковский
© Гундорова Н.И., Сергеев М.Ю., 2013
© Оформление. ФГБОУ ВПО «Воронежский
государственный технический
университет», 2013
Введение
Наиболее важной компонентой практического курса по дисциплине «Операционные системы» является изучение основ программирования на языке ассемблера – от простейших директив объявления данных до создания подпрограмм.
Основной целью данного практикума является изложение теоретического материала по особенностям программирования на языке ассемблера, снабженного практическими примерами и заданиями для выполнения в ходе лабораторных работ.
В первой главе рассматриваются особенности персонального компьютера, которые необходимо знать для грамотного программирования на языке ассемблера.
Далее рассматриваются основы языка: алфавит и лексемы языка, базовые директивы определения данных и присваивания. Отдельная глава посвящена изучению базовых команд пересылки данных и команд простейших арифметических операций (сложение и вычитание, умножение и деление). После описываются команды переходов и сравнения, также предназначенные для реализации алгоритмов ветвления и циклов.
Особая глава выделена подробному описанию строения типовой программы на ассемблере. Рассматриваются все типовые сегменты программы их структура и принцип взаимодействия.
Заключительные главы практикума содержат изложение основ работы со стеком и использования подпрограмм. Также приведено описание ввода и вывода данных с использованием специальных модулей.
Полученные теоретические и практические навыки позволят разрабатывать программы на языке ассемблера, реализующие типовые алгоритмы языков программирования.
Практикум соответствует типовой программе по дисциплине «Операционные системы» и предназначен для студентов заочной сокращенной формы обучения.
1. Особенности персонального компьютера
1.1. Оперативная память
Оперативная память ПК делится на ячейки размером в 8 разрядов. Ячейки такого размера принято называть байтами (byte). Разряды байта нумеруются справа налево от 0 до 7 (рис. 1):
Рис. 1. Порядок нумерации разрядов в байте
При этом правые разряды (с меньшими номерами) называются младшими, а левые разряды - старшими. В каждом разряде может быть записана величина 1 или 0, такую величину принято называть битом (bit). Таким образом, содержимое любого байта - это набор из 8 битов, из 8 нулей и единиц.
Ради краткости в дальнейшем содержимое ячеек будет записываться не в двоичной системе, а в шестнадцатеричной, с указанием в конце записи числа буквы h (hexadecimal - шестнадцатеричный), чтобы отличать такие числа от десятичных. Например, если содержимым байта является 00010011, то будем записывать его как 13h (десятичное 19).
Байты нумеруются, начиная с 0, порядковый номер байта называется его адресом. Объем оперативной памяти ПК – 220 байтов (1 Мб), поэтому для ссылок на байты памяти нужны 20-разрядные адреса - от 00000h до FFFFFh.
Далее в данном практикуме на всех рисунках, изображающих память, байты с меньшими адресами будут располагаться вверху (или слева), а с большими адресами - внизу (или справа) (рис. 2):
Рис. 2. Порядок нумерации байтов
Байт - это наименьшая адресуемая ячейка памяти. Но в ПК имеются и более крупные адресуемые ячейки - слова и двойные слова.
Слово (word) – это два соседних байта. Размер слова - 16 разрядов. Они нумеруются, если рассматривать слово как единое целое, справа налево от 0 до 15 (рис. 3). Адресом слова считается по определению адрес его первого байта (с меньшим адресом).
Рис. 3. Структура слова
Двойное слово (double word) – это четыре соседних байта или, что то же самое, два соседних слова. Размер двойного слова - 32 разряда, они нумеруются справа налево от 0 до 31 (рис. 4). Адрес двойного слова - адрес первого из его байтов (с наименьшим адресом).
Рис. 4. Структура двойного слова
ПК может работать как с байтами, так и со словами и двойными словами, т. е. в ПК имеются команды, в которых ячейки этих размеров рассматриваются как единое целое. В то же время слова и двойные слова можно обрабатывать и побайтно.
Адрес ячейки еще не однозначно определяет ячейку, поскольку с этого адреса может начинаться ячейка размером в байт, ячейка размером в слово и ячейка размером в двойное слово. Поэтому нужно еще тем или иным способом указывать размер ячейки. Как это делается, будет рассмотрено позже.
Зачем введены ячейки разных размеров? Это связано с тем, что данные разных типов имеют разные размеры, поэтому и нужны ячейки разных размеров. Например, байты используются для хранения небольших целых чисел (типа счетчиков) и символов. В виде же слов представляют обычные целые чисел и адреса. Двойные слова используются для хранения больших чисел.