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

4.2.1 Индексные регистры

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

В архитектуре x86 индексные регистры называются SI и DI. При базово-индексной адресации их содержимое может суммироваться с содержимым регистра BX.

Индексный регистр-источник SI применяется в качестве указателя адреса байта или слова в таких строковых командах, как LODS (загрузить строку), CMPS (сравнить строку), MOVS (переслать строку).

Индексный регистр-приёмник DI используется как указатель назначения для адреса байта или слова в строковых командах, таких как SCAS (сканировать строку), CMPS, MOVS, STOS (записать строку)

4.2.2 Сегментные регистры

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

SS - содержит базовый адрес текущего сегмента стека.

CS - содержит базовый адрес текущего кодового сегмента.

DS - сегмент данных по умолчанию.

ES, FS, GS - дополнительные регистры, служат для дополнительной адресации сегмента данных.

4.4 Описание используемых функций

В программе проводятся действия с различными файлами (Uk64.dat, My.dat, Result.dat). Происходит их закрытие, создание, открытие, запись, считывание из них.

Для работы с отдельным файлом необходимо указать в регистре BX дескриптор этого файла.

Открытие файла. В Ah помещается № функции открытия файла, в данном случае это 3DH. В Al - режим доступа, у нас 00 – для чтения. В Dx помещается эффективный адрес строки. Вызываем 21-е прерывание. В идентификатор используемого файла помещаем содержимое регистра АХ.

Создание файла. В Ah помещается № функции создания файла, в данном случае это 3СH. Обнуляем регистр СХ. В Dx помещается эффективный адрес строки. Вызываем 21-е прерывание. В переменную для хранения дескриптора помещаем содержимое регистра АХ.

Чтение данных. В Ah помещается № функции, в Вх – дескриптор файла. Сх – число байт для чтения. В Dx эффективный адрес переменной, куда будут считываться байты.

Закрытие файла. В Вх помещается дескриптор файла. В Ah № функции – 3EH. Вызывается 21-е прерывание.

4.5 Описание процедур программы

Ниже приведено описание используемых в программе процедур: процедуры открытия файла “Uk64.dat”, процедуры чтения заданного варианта, процедуры поиска нулевой строки, процедуры записи в файл “My.dat” и процедуры создания и записи канального файла.

4.5.1 Начало

Выполняется инициализация сегментного регистра ds (132-133).

Настройка дополнительного сегмента данных (es в качестве адреса цепочки-приёмника) для работы с цепочками данных (137-138).

4.5.2 Процедура открытия файла “Uk64.dat

Вначале, регистр AH инициализируется номером функции для открытия существующего файла (5), затем помещаем в AL режим доступа (6). Обнуляем CX (маска атрибутов) (7), помещаем в DX исполнительный адрес строки с именем файла (8), открываем файл “Uk64.dat” (9) и сохраняем в переменной идентификатор файла “Uk64.dat” (10). На языке ассемблера это выглядит следующим образом:

4.5.3 Процедура чтения заданного варианта

Помещаем в CX номер заданного варианта (14), затем уменьшаем его значение на 1 (15). Вызываем процедуру поиска нулевой строки в кадре до тех пор, пока значение CX не станет равным 0 (16). Помещаем в AH номер функции чтения из файла (17), в BX – идентификатор (18), в CX количество необходимых бит (41). Затем, помещаем в DX исполнительный адрес буфера для приема данных (42). Производим чтение данных из файла “Uk64.dat” (43), помещаем в AH номер функции для закрытия файла (44) и закрываем его (49).