Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2

.docx
Скачиваний:
17
Добавлен:
03.08.2021
Размер:
450.36 Кб
Скачать

Федеральное агентство связи

Федеральное государственное бюджетное образовательное

учреждение высшего образования

Поволжский государственный университет

телекоммуникаций и информатики

Кафедра Информационных систем и технологий

Лабораторная работа №2

По дисциплине «Архитектура информационной системы»

Тема: «Упрощённое оформление программ. Создание исполняемых *.com файлов»

Выполнили: студенты группы ИСТ-74У

Гусева Полина и Смолева Вера

Руководитель :

__________________ Куляс О.Л.

Самара 2018

Контрольные вопросы:

Директивы используются только компилятором в момент компиляции программы. Команды включаются в файл программы и выполняются процессором после запуска программы.

 команды или инструкции, представляющие собой символические аналоги машинных команд;

макрокоманды - оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями;

Формат команд

Каждая машинная команда состоит из двух частей: операционной части, «что делать?», и операндной части, определяющей объекты обработки, то есть то, «над чем делать?».

В машинную команду явно или неявно входят следующие элементы:

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

  • замена сегмента, если нас по какой-либо причине не удовлетворяет сегмент по умолчанию; изменение размерности адреса;

  • изменение размерности операнда:

  • указание на необходимость повторения данной команды;

  1. поле кода операции, определяющее действие данной команды. Одной и той же команде могут соответствовать несколько кодов операций в зависимости от ее операндов;

  2. поле операндов; содержит от 0 до 2 элементов.

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

Внутри сегмента программа обращается к адресам относительно начала сегмента линейно, т.е. начиная с 0 и заканчивая адресом, равным размеру сегмента. Этот относительный адрес, или смещение, который микропроцессор использует для доступа к данным, называется эффективным.

Каждая программа содержит 3 типа сегментов:

  • Сегмент  кодов – содержит машинные команды для выполнения. Обычно первая выполняемая команда находится в начале этого сегмента, и операционная система передает управление по адресу данного сегмента  для выполнения программы. Регистр сегмента кодов (CS) адресует данный сегмент.

  • Сегмент данных – содержит данные, константы и рабочие  области, необходимые программе. Регистр сегмента данных (DS) адресует данный сегмент.

  • Сегмент стека — содержит адреса возврата как для программы (для возврата в операционную систему), так и для  вызовов подпрограмм (для возврата в главную программу), а также используется для передачи параметров в процедуры. Регистр сегмента стека (SS) адресует данный сегмент. Адрес текущей вершины стека задается регистрами SS:ESP.

Функциональное назначение сегмента несколько шире, чем простое разбиение программы на блоки кода, данных и стека. Сегментация является частью более общего механизма, связанного с концепцией модульного программирования. Она предполагает унификацию оформления объектных модулей, создаваемых компилятором, в том числе с разных языков программирования. Это позволяет объединять программы, написанные на разных языках. Именно для реализации различных вариантов такого объединения и предназначены директивы сегментации.

Для задания сегментов в тексте программы можно пользоваться упрощенными директивами:

  • .CODE — для указания начала сегмента кода;

  • .DATA — для указания начала сегмента данных;

  • .STACK — для указания начала сегмента стека.

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

Сегмент программы описывается директивами SEGMENT и ENDS.

имя_сегмента segment readonly выравн. тип разряд 'класс' ...имя_сегмента ends

Имя сегмента — метка, которая будет использоваться для получения сегментного адреса, а также для комбинирования сегментов в группы.

Все пять операндов директивы SEGMENT необязательны.

6.9 Как производится ассемблирование и компоновка программы при упрощенной сегментации?

tasm имя.asm

tlink /v имя.obj

6.10 Как выглядит типовая форма для создания .exe приложений упрощенной сегментацией?

6.11 Каким образом располагается программа типа .exe после ее загрузки в память?

6.12 В каких случаях используются программы типа .com?

Во многих случаях объем программы оказывается значительно меньше 64 Кбайт. Такую программу нет никакой необходимости составлять из нескольких сегментов. В этом случае и данные, и стек, и команды можно разместить в одном сегменте, настроив все сегментные регистры на его начало. Исполняемые файлы, составленные по этим правилам, имеют расширение *.COM. В виде COM приложений обычно пишутся резидентные программы и драйверы, хотя в таком виде можно оформить любую прикладную программу.

6.13 Как выглядит типовая форма для создания .com приложений?

6.14 Из каких сегментов состоит исходный модуль программы типа .com?

Из исходного текста видно, что программа использует упрощенные директивы сегментации и содержит один сегмент – сегмент кода.

6.15 Каким образом располагается программа типа .com после ее загрузки в память?

После загрузки программы в память все сегментные регистры указывают на начало сегмента, в котором располагается программа, фактически на начало PSP. Регистр указателя стека SP автоматически загружается числом – начальной точкой входа в стек FFFEh. Таким образом, независимо от размера программы, под нее отводится 64 Кбайта адресного пространства. Всю нижнюю часть занимает стек, размер которого заранее не определен, а зависит от работы программы.

6.16 Каков размер области сегмента префикса программы (PSP)?

Оператор ORG 100h резервирует 256 байт в памяти для сегмента префикса программы (Program Segment Prefics – PSP). Этот сегмент содержит таблицы и поля данных, которые заполняются и используются системой в процессе выполнения программы.

6.17 Каков размер стека в программах типа .com?

Всю нижнюю часть занимает стек, размер которого заранее не определен, а зависит от работы программы.

6.18 Как производится ассемблирование и компоновка программ типа .com?

Задание:

Исходный код из лабораторной работы №1

Создание исполняемого файла hello_2.exe и проверка его на работоспособность

Задание 4.1.

4.2, 4.3, 4.4

Файл HELLO_2S.obj

Файл HELLO_2s.map

00000Н

КОД

00018Н

0001AH

ДАННЫЕ

00042Н

00050Н

СТЕК

00100Н

Задание 4.6

Задание 4.7, 4.8

Задание 4.9

Файл obj

Файл map

Префикс программы PSP

00000Н

КОД

0013FH

00140H

ДАННЫЕ

00140H

Соседние файлы в предмете Архитектура информационных систем