Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
готовые (нету 52 ,54,28,27,25,24,23,32.).doc
Скачиваний:
7
Добавлен:
20.04.2019
Размер:
199.68 Кб
Скачать

26)Опишите обработку цепочечных команд. Приведите примеры.

Кроме привычного всем понятия массивов в ассемблере существует структура называемая цепочкой. Цепочка - непрерывная последовательность байт, слов или двойных слов, обрабатываемая как единое целое. Основное отличие цепочек от массивов состоит в способе доступа к элементам: для массивов - произвольный доступ, для цепочек - только последовательный (от начала цепочки к концу или от конца к началу). Цепочечные команды - команды для обработки цепочек. Особенностью всех цепочечных команд (кроме обработки очередного элемента цепочки) является автоматическое продвижение к следующему элементу цепочки.

Название

Команды

Действие

пересылка цепочки

movs <адр. приемника>, <адр. источника> movsb, movsw, mowsd

копирует один элемент цепочки из операнда источника в операнд приемник

сравнение цепочек

cmps <адр. приемника>, <адр. источника> cmpsb, cmpsw, cmpsd

сравнивает элементы цепочек из операнда источника и операнда приемника

сканирование цепочки

scas <адр. приемника> scasb, scasw, scasd

сканирует цепочку приёмник на присутствие некоторого элемента (задаётся в регистре аккумуляторе)

загрузка элемента из цепочки

lods <адр. источника> lodsb, lodsw, lodsd

загрузить элемент из цепочки источника в регистр аккумулятор

сохранение элемента в цепочке

stos <адр. приемника> stosb, stosw, stosd

восстановить элемент из регистра аккумулятора в цепочку

получение элемента цепочки из порта ввода/вывода

ins <адр. приемника>, <номер порта> insb, insw, insd

загрузить элемент в цепочку приемник из указанного порта ввода/вывода

вывод элементов цепочки в порт ввода/вывода

outs <номер порта>, <адр. источника> outbs, outws, outds

переслать элемент из цепочки источника в указанный порт ввода/вывода

29)Опишите макросредства в языке Ассемблер. Перечислите их преимущества и недостатки.

Макросредства - инструменты (средства) модификации текста программы во время ее трансляции.

Макросредства предназначены для облегчения написания программ на языке Ассемблер и для улучшения понимания исходного текста программы.Обработка программы с использованием макросредств осуществляется транслятором в два этапа. На первом этапе работает макрогенератор, который производит замены для всех макросов, а на втором этапе уже преобразованный текст программы транслируется в объектный код.Синтаксис макроопределения:

<имя макрокоманды> MACRO [формальные параметры]

тело макроопределения

ENDM

Директива MACRO - это заголовок макроопределения. В ней указывается имя и через запятую перечисляются формальные параметры, если необходимо. Размещаться макроопределения могут :

1.   В любом месте программы.

!!! Обязательно до первой ссылки на него.

2.   В отдельном файле.

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

30)Открытие или создание файла с расширенными возможностями

Функция 6Ch появилась в последних версиях MS DOS. С ее появлением устраняется необходимость отслеживать существование создаваемого файла. Для корректной работы достаточно задать нужные значения в соответствующих регистрах. Анализ возможных значений показывает, что данная функция фактически заменяет существовавшие до этого функциисоздания и открытия файлов. Вход: АХ = 6C00h; BL = флаги — режим открытия (значения битов: 7 — наследование; 4-6 — режим разделения; 3=0 — резерв; 0-2 — режим доступа); ВН = флаги (значения битов: 6=0 — использовать стандартную для MS DOS буферизацию; 6=1 — отменить стандартную для MS DOS буферизацию; 5=0 — использовать обычный обработчик ошибок (int 24h); 5=1 — не использовать обычный обработчик ошибок (int 24h), для выяснения причины ошибки использовать функцию 59h int 21h); CX = атрибуты создаваемого (и только) файла; DL = действия, если файл существует или не существует (значения бит: 0-3 — действие, если файл существует (0000 — вернуть ошибку; 0001 — открыть файл; 0002 — открыть файл без сохранения существующего); 4-7 — действие, если файл не существует (0000 — вернуть ошибку; 0001 — открыть файл; 0002 — создать и открыть файл); DH = 00h — резерв; DS:SI — адрес строки с ASCIZ-именем файла.Выход: CF = 0 — успешное выполнение функции: АХ = дескриптор файла, СХ = состояние (0 — файл открыт; 1 — файл создан и открыт; 2 — файл открыт без сохранения содержимого существующего файла); CF = 1 — АХ = код ошибки.