![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Модели программ, компиляция и отладка
На практике различают несколько моделей, используемых при написании программ. Существенное отличие моделей состоит в том, что каждая из них предполагает наличие различного числа сегментов и способов группирования программных сегментов и сегментов данных. Ниже перечислены используемые модели и даны их краткие характеристики (код – означает программный сегмент):
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, существенно облегчающего отладку программы. Контрольные вопросы 1. Может ли регистр использоваться в фактическом параметре макровызова? 2. Чем отличается команда от директивы? 3. Придумайте, как программисты на ассемблере могут определить синонимы для мнемокодов команд. Как это можно реализовать? 4. Перечислите модели ассемблерных программ и укажите их особенности и основные отличия. 5. Перечислите все директивы определения данных и дайте примеры их использования. 6. Объясните назначение вспомогательной директивы DUP и приведите пример ее использования. 7. Какая директива определения данных используется под вещественные числа в формате ДВФ? 8. Приведите примеры использования директивы EQU. 9. Укажите все возможные способы передачи параметров процедуре. 10. Как расширились возможности регистров данных в процессоре Pentium, для целей адресации? 11. Расширилось ли число способов адресации в процессоре Pentium по отношению к Intel 8086 и на сколько? 12. Для чего используются директивы определения данных? 13. Какие директивы используются для определения данных в формате ВВФ? 14. Как осуществляется передача параметров в макросах? 15. В чем отличие в использовании макросов и процедур? 16. Приведите пример использования макросов – блоков повторения. 17. Для чего используются директивы условного ассемблирования? 18. Дайте сравнительную характеристику моделей программ. 19. Как можно узнать о том, выполняет ли ЦП команды ММХ и SSE? 20. В каких случаях используется директива PURGE? 21. Назовите отладчики, которые Вы знаете? Чем они отличаются? 22. Зачем нужен файл с расширением LST (листинг)? 23. Какую модель программы Вы использовали при выполнении лабораторных работ и почему? 24. Для чего служит программа debug.exe? 25. На каком этапе осуществляется «вставка» библиотечных процедур? 26. Существуют ли, какие-либо особенности использования команд ММХ и SSE в программах на ассемблере?
|