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

Билет 1.

2. Работа с файлами с использованием дескриптора файла, стандартные файлы-устройства.

Ввод-вывод с устройствами организован системно, устройство сопос-

тавляется файлу. Используются унифицированные функции, которые одинако-

во работают с экраном, принтером, клавиатурой и дисковым файлом.

В любой программе существует 5 стандартных файлов-устройств, ко-

торые задаются описателями:

0 - ввод с клавиатуры;

1 - вывод на экран;

2 - вывод ошибок на экран;

3 - ввод-вывод в последовательный порт;

4 - вывод на принтер.

На диске много файлов, если в программе открыт 1-й файл, то ему при-

сваивается N5, второму файлу - N6, если закрыть второй файл, то описа-

тель 6 освобождается, и тогда при открытии 3-го файла ему ставится в

соответствие описатель N6. Допустимое количество одновременно открытых

файлов в MS DOS задается в файле config.sys следующей командой

files= <количество файлов>.

В функциях расширенной версии используются регистры AX,CX,BX,DX.

В большинстве случаев эти регистры используются для следующих целей:

AX: на входе AH - код функции

на выходе AX - число : при открытии файла - номер файла, в опе-

рациях чтения/записи - число реально

перданных байт. При возникновении ошибки

AX - номер ошибки.

BX: описатель файла.

CX: число затребованных байт при вводе и выводе.

DX: адрес строки, при открытии файла или адрес поля ввода-вывода в

операциях чтения и записи.

Флаг CF (перенос) на выходе сигнализирует об ошибке при выполнении

любых операций.

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

Косвенный межсегментный переход. Команды реализуются с исполь-

зованием постбайта. Адрес перехода занимает двойное слово. Поэтому

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

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

┌─────┐ ┌───┬───┬────┐ ┌─────────┐

│ КОП │ │mod│КОП│r/m │ │disp16 │

└─────┘ └───┴───┴────┘ └─────────┘

В данной команде поле reg не используется, и mod<>11.

Пример перехода с использованием адресной константы.

Адресная константа должна быть длиной два слова.

adr dd PP1

┌────────┬───────┐

│смещение│сегмент│

└───┴────┴───┴───┘

вызов:

CALL adr

или

CALL dword ptr Adr.

┌─────┐ ┌───┬───┬────┐ ┌─────────┐

│ КОП │ │00 │КОП│110 │ │Адрес Adr│

└─────┘ └───┴───┴────┘ └─────────┘

Прямой адрес указывает на Adr, где располагается адрес подпрограммы.

Примеры использования других режимов адресации.

call dword ptr [SI]

регистр SI и указывает на поле памяти, где обязательно должно быть 4

байта.

┌────────┬───────┐

[SI] -> │смещение│сегмент│

└────────┴───────┘

call dword ptr [BX + SI + 4]

┌────────┬───────┐

│смещение│сегмент│

└───┴────┴───┴───┘

Билет 2.