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

3.5.3 CreationMy – Создание файла My.Dat

Используется функция создания файла (3ch) (строка 41), где:

cx - атрибут файла (строка 42)

ds:dx - адрес строки с именем файла (строка 43)

Сохраняется дескриптор созданного файла my.dat для записи (строка 44).

Загружается адрес строки дампа (16 байт) в dx (строка 45).

3.5.4 NewStr – Чтение из файла uk64.Dat и запись в файл My.Dat до нулевой строки

Для чтения одной строки в регистр cx передаётся значение 16. Используется функция чтения файла 3fh. Дескриптор, полученный при открытии файла uk64.dat помещается в bx. Выполняется считывание строки. Затем осуществляется проверка на количество прочитанных байт: если не 16, то управление передаётся на метку m2 (строки 52 - 57).

В регистр di передаётся адрес сканируемой строки. В cx количество байт (16). В аккумулятор передаётся значение 0 для сканирования строки. Используется команда сканирования цепочки с префиксом повторения (пока cx!=0). Выполняется проверка нулевой строки. Если строка нулевая, то управление передаётся на метку m2. Если не нулевая, выполняется следующая команда после проверки (строки 58-62).

Дескриптор файла My.dat передаётся в bx. В cx количество записываемых байт (16). Для записи строк используется функция записи в файл 40h (строки 63-66).

После этого осуществляется передача управления на метку m3, т.е. чтение следующей строки и проверка на нулевую. Если строка не нулевая, то записываем в файл My.dat и т.д. пока не встретится строка из 16 нулевых байт. (строк 67).

3.5.5 CloseCadr – Закрытие uk64.Dat, создание result.Dat. Выполнение функции установки указателя файла

Дескриптор файла uk64.dat, возвращённый при открытии, передаётся в bx. Функцией закрытия файла закрывается файл uk64.dat (строки 73-75).

С помощью функции 3ch создаётся новый файл result.dat. Регистры ds:dx указывают на адрес строки с именем файла. Дескриптор созданного файла сохраняется в переменную handle1 (строки 76-80).

3.5.6 Cursor – Установка указателя на начало файла My.Dat

Для установки указателя к началу файла используется функция 42h. В al передаётся 0, чтобы переместить указатель к началу файла. К этой позиции прибавляется cx:dx. Так как необходимо перейти к началу файла, то регистры cx,dx обнуляются. Дескриптор файла my.dat передаётся в bx. После этого осуществляется изменение положения указателя в файле (строки 85-90).

3.5.7 NextStr – выбор определённых байтов и битов и записи результата в файл Result.Dat

В регистр cx передаётся число повторений цикла. Дескриптор файла my.dat передаётся в bx. Адрес строки загружается в dx. В стек сохраняется число повторений, а также формируемый байт (строки 97-102).

В cx передаётся длина строки (16 байт). С помощью функции чтения (3fh) считывается строка. Затем сравнивается число прочитанных байт с 16. Если не 16, то переход на метку EndCanal. Если 16, то выполняется следующая команда (строки 103-107).

После этого из стека извлекается формируемый байт (строка 108).

Устанавливается флаг переноса в соответствии с указанным битом (2) указанного байта (16-16) строки. С помощью rcl сдвига флаг переноса помещается в формируемый байт (строки 109-110).

Тоже самое проделывается и для второго бита: устанавливается флаг переноса в соответствии с указанным битом (5) указанного байта (21-16) строки. Rcl сдвигом флаг переноса помещается в формируемый байт (строки 111-112).

После этого из стека извлекается число повторений и выполняется команда loop, которая уменьшает cx на 1 и управление передаётся на метку m5 для продолжения формирования байта (строки 113-114).

Сформированный байт помещается в буфер (переменная buffer). Используется функция 40h записи в файл. Дескриптор созданного файла result.dat передаётся в bx. В cx помещается число байт для записи. Выполняется запись в файл (строки 115-119).

После записи осуществляется переход на начало этапа с целью дальнейшего формирования (строка 120).Стек освобождается от хранящихся значений (строки 122-123). Используется функция закрытия 3eh потоков для чтения и записи (строки 124-131).

И в основной программе используется функция завершения программы 4ch. Завершается работа программы (строки27-28).

4 Результаты выполнения программы

4.1 График построен на языке C# в среде программирования Visual Studio 2010. Нумерация осей в десятичной форме

Рисунок 5 – График

4.2 My.dat

Рисунок 6 – Часть файла My.dat

4.3 Числа отображены в 16-тиричной форме

Рисунок 7 - Канальный файл

4.4 Карта памяти

Рисунок 8 - Карта памяти (файл map)

Заключение

Результатом выполнения курсового проекта является программа, реализующая выборку определенных номеров битов с помощью набора команд процессора Intel 80386.

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