- •Вычислительные машины, системы и сети
- •Оглавление
- •Введение
- •Раздел 1. Центральный процессор
- •1.1. Архитектура центрального процессора
- •1.2. Организация памяти и способы адресации
- •1.3. Общая характеристика системы команд
- •1.4. Команды пересылки данных
- •1.5. Арифметические команды
- •1.6. Сдвиги и логические команды
- •1.7. Команды обработки строк данных
- •1.8. Команды передачи управления
- •1.9. Команды управления процессором
- •Раздел 2. Арифметический процессор
- •2.1. Архитектура арифметического процессора
- •2.2. Программная модель арифметического процессора
- •2.3. Система команд арифметического процессора
- •Раздел 3. Эволюция характеристик цп
- •3.1. Архитектура цп Pentium
- •3.2. Программная модель цп Pentium
- •3.3. Система команд ммх-расширения
- •3.4. Система команд sse-расширения
- •Раздел 4. Системные устройства вм
- •4.1. Программируемый контроллер прерываний
- •4.2. Программируемый контроллер пдп
- •4.3. Системный таймер
- •4.4. Системные регистры
- •Раздел 5. Защищенный режим работы вм
- •5.1. Максимальный режим работы цп
- •5.2. Дескрипторы и шлюзы
- •Контрольные вопросы
- •Раздел 6. Язык ассемблера
- •6.1. Программирование на языке ассемблера
- •6.2. Директивы языка ассемблера asm-86
- •6.3. Использование регистров Pentium
- •6.4. Директивы языка ассемблера asm-89
- •6.5. Модели программ, компиляция и отладка
- •Контрольные вопросы
- •Раздел 7. Специфика вычислительных систем
- •7.1. Мультипроцессорные системы
- •7.2. Управление процессами
- •7.3. Семафорные операции
- •7.4. Разделение общих процедур
- •7.5. Управление памятью
- •Контрольные вопросы
- •Раздел 8. Специализированные процессоры и вм
- •8.1. Процессор ввода-вывода
- •8.2. Программная модель процессора ввода-вывода
- •8.3. Система команд процессора ввода-вывода
- •8.4. Процессор операционной системы
- •Контрольные вопросы
- •Раздел 9. Назначение и топология сетей
- •9.1. Особенности и назначение сетей различных типов
- •Топология «звезда».
- •9.2. Кодирование информации
- •9.3. Назначение и структура пакетов
- •9.4. Методы управления обменом
- •9.5. Эталонные модели
- •Контрольные вопросы
- •Раздел 10. Практическая реализация сетей
- •10.1. Адресация в сетях
- •10.2. Основные службы Internet
- •10.3. Особенности web-дизайна
- •10.4. Особенности и тенденции развития Internet
- •Контрольные вопросы
- •Глоссарий
- •Литература
6.5. Модели программ, компиляция и отладка
На практике различают несколько моделей, используемых при написании программ. Существенное отличие моделей состоит в том, что каждая из них предполагает наличие различного числа сегментов и способов группирования программных сегментов и сегментов данных. Ниже перечислены используемые модели и даны их краткие характеристики (код – означает программный сегмент):
TINY - код и данные в одной группе (com - файлы );
SMALL - код – один сегмент, данные в одной группе;
MEDIUM - код – несколько сегментов, данные в одной группе;
COMPACT - код один сегмент, ссылка на данные – типа far;
LARGE - код – несколько сегментов, данные - типа far;
FLAT - код и данные в одном сегменте (плоская модель).
Для получения исполняемого файла программы составленной на ассемблере надо реализовать, по крайней мере, два этапа – осуществить трансляцию программы и получить объектный модуль с расширением obj, а затем скомпоновать объектные модули в исполняемую программу, с расширением exe (или com). Реализация первого этапа осуществляется с помощью программы MASM (или TASM), а второго – с помощью LINK (или TLINK). В ряде случаев, особенно при разработке сложных программ, состоящих из большого числа модулей, бывает не обойтись без специальных средств отладки, типа турбодебагера td.
Пусть текст исходной программы хранится в файле с именем SIMPLE.ASM. Трансляцию можно осуществить вызовом турбо ассемблера TASM.EXE с помощью, например, следующей команды DOS:
tasm /z/zi/n simple,simple,simple
Ключ /z разрешает вывод на экран строк исходного текста программы, в которых ассемблер обнаружил ошибки (без этого ключа поиск ошибок пришлось бы проводить по листингу трансляции).
Ключ /zi управляет включением в объектный файл информации, не требуемой при выполнении программы, но используемой отладчиком.
Ключ /n подавляет вывод в листинг перечня символических обозначений в программе, от чего несколько уменьшается информативность листинга, но сокращается его размер.
Стоящие далее параметры определяют имена файлов: исходного (SIMPLE.ASM), объектного (SIMPLE.OBJ) и листинга (SIMPLE.LST). При желании можно в строке вызова транслятора указать полные имена файлов с их расширениями, однако необходимости в этом нет, так как по умолчанию транслятор использует именно указанные выше расширения.
Важную роль при отладке программы на стадии трансляции играют ключи, которые управляют как процессом ассемблирования, так и полнотой листинга – файла с расширением LST, существенно облегчающего отладку программы.
Контрольные вопросы
-
Может ли регистр использоваться в фактическом параметре макровызова?
-
Чем отличается команда от директивы?
-
Придумайте, как программисты на ассемблере могут определить синонимы для мнемокодов команд. Как это можно реализовать?
-
Перечислите модели ассемблерных программ и укажите их особенности и основные отличия.
-
Перечислите все директивы определения данных и дайте примеры их использования.
-
Объясните назначение вспомогательной директивы DUP и приведите пример ее использования.
-
Какая директива определения данных используется под вещественные числа в формате ДВФ?
-
Приведите примеры использования директивы EQU.
-
Укажите все возможные способы передачи параметров процедуре.
-
Как расширились возможности регистров данных в процессоре Pentium, для целей адресации?
-
Расширилось ли число способов адресации в процессоре Pentium по отношению к Intel 8086 и на сколько?
-
Для чего используются директивы определения данных?
-
Какие директивы используются для определения данных в формате ВВФ?
-
Как осуществляется передача параметров в макросах?
-
В чем отличие в использовании макросов и процедур?
-
Приведите пример использования макросов – блоков повторения.
-
Для чего используются директивы условного ассемблирования?
-
Дайте сравнительную характеристику моделей программ.
-
Как можно узнать о том, выполняет ли ЦП команды ММХ и SSE?
-
В каких случаях используется директива PURGE?
-
Назовите отладчики, которые Вы знаете? Чем они отличаются?
-
Зачем нужен файл с расширением LST (листинг)?
-
Какую модель программы Вы использовали при выполнении лабораторных работ и почему?
-
Для чего служит программа debug.exe?
-
На каком этапе осуществляется «вставка» библиотечных процедур?
-
Существуют ли, какие-либо особенности использования команд ММХ и SSE в программах на ассемблере?