Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_uroven.docx
Скачиваний:
3
Добавлен:
07.09.2019
Размер:
24.74 Кб
Скачать

8.Привести этапы создания проги с помощью пакета tasm с описанием каждого этапа . Основные правила синтаксиса яз ассемблер.

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

Подготовка исходного текста программы выполняется с помощью любого текстового редактора. Файл с исходным текстом должен иметь расширение ASM. При выборе редактора для подготовки исходного текста программы следует иметь в виду, что многие текстовые процессоры (например, Microsoft Word) добавляют в выходной файл служебную информацию о формате (размер страниц, типы используемых шрифтов и др.). Поэтому следует воспользоваться редактором, выводящим в выходной файл "чистый текст", без каких-либо управляющих символов. К таким редакторам относятся, например, программа Блокнот.

Трансляция исходного текста программы состоит в преобразовании предложений исходного языка в коды машинных команд и выполняется с помощью транслятора с языка ассемблера (т. е. с помощью программы ассемблера). Можно воспользоваться пакетами TASM. В результате трансляции образуется объектный файл с расширением .OBJ.

Компоновка объектного файла выполняется с помощью программы компоновщика (редактора связей). Компоновщик необходимо брать из одного пакета с ассемблером. В результате компоновки образуется загрузочный, или выполнимый, файл с расширением .ЕХЕ.

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

9.Классифик-я директив опред-я данных с хар-ой каждой директиве

Директива DB генерирует последовательность байт. Каждый операнд может представлять собой выражение-константу со значением от -128 до 255, или строку символов любой длины. Выражение- константа генерирует 1 байт кода, а строки генерируют последовательность

байт со значениями, соответствующим коду ASCII каждого символа.

Директива DW генерирует последовательность слов. Каждый операнд может представлять собой выражение-константу со значением от -32768 до 65535, или адресное выражение. Для адресного выражения встроенный ассемблер генерирует указатель ближнего типа, что естьслово, содержащие смещения адреса. Директива DD генерирует последовательность двойных слов. Каждый операнд может представлять собой выражение-константу со значением от -2147483648 до 4294967295 или адресное выражение.Для адресного выражения встроенный ассемблер генерирует указатель дальнего типа, что есть слово, содержащие смещения адреса, за которым следует слово, содержащее сегментную часть адреса. Данные, генерируемые по директивам DB, DW и DD, всегда записываются в сегмент кода.

10.Стек. Классификация команд работы со стеком с хар-ой этих команд и примерами действий этих команд . Использование стека в яз ассемблер.

Стек-область памяти для временного хранения данных в кот-ю по специальным командам (PUSH и POP) можно записывать отдельные слова (но не байты). В стеке реализован механизм LIFO. Наиболее важное исп-е стека связано подпрограммами, в этом случае стек содержит адрес возврата из подпрограммы и передаваемые в/из данные.

Для стека можно отвести любую область памяти, но ее размер зависит от режима работы микропроцессора и ограничивается 64 Кбайт

Особенности организации стека.

1 Запись и чтение данных в стеке осуществляется в соответствии с принципом LIFO (Last In First Out — “последним пришел, первым ушел”).

2 По мере записи данных стек растет в сторону младших адресов. Эта особенность заложена в алгоритм команд работы со стеком; Др. словами, стек заполняется снизу вверх: первый элемент записывается в самый конец стека (в ячейку с наибольшим адресом), а следующий элемент записывается «над» ним.

3 При чтении из стека первым всегда удаляется верхний элемент, поэтому низ стека фиксирован, а вершина стека все время сдвигается. Текущее положение этой вершины наз. вершиной стека. Адрес вершины стека храниться в регистре SP (stack pointer, указатель стека). Т.е. в регистре SP хранится смещение той ячейки, в которой находится элемент, записанный в стек последним. Смещение относительно начала сегмента стека. Итак, абсолютный адрес вершины стека задается парой сегментов SS:SP. Команды работы со стеком неявно изменяют этот регистр так, чтобы он указывал всегда на последний записанный в стек элемент. Если стек пуст, то значение esp равно адресу последнего байта сегмента, выделенного под стек.

Команды работы со стеком.

Запись слова в стек

push операнд — запись значения операнд в вершину стека.

  Операнд находиться в регистре общего назначения, в сегментном регистре, в памяти

При реализации этой команды выполняются следующие действия

1.   (sp) = (sp) – 2; значение sp уменьшается на 2;

2.   значение из операнд записывается по адресу ss:sp.

Чтение слова из стека

pop операнд — запись значения из вершины стека по месту, указанному операндом.

Алгоритм работы команды pop обратен алгоритму команды push

1. значение из вершины стека пересылается в операнд

2. (sp) = (sp) + 2; значение sp увеличивается на 2.

Использование стека

·      для временного сохранения значений регистров

например, push cx

. . . ; например во вложенных циклах

pop cx

·      для сохранения текущих состояний флагов и последующего их восстановления

pushf

popf

·      для определения или изменения состояния любого флага