- •По курсу: ”организация эвм и систем”
- •Печатается по решению редакционно-издательского совета
- •Введение
- •1Введение в архитектуру реального режима ibm pc
- •Память и процессор
- •Распределение адресного пространства
- •Система прерываний
- •Система ввода-вывода
- •Архитектурные особенности процессоров ia-32
- •Дополнительные режимы адресации
- •Использование средств 32-разрядных процессоров в программировании
- •2Общие указания по выполнению лабораторных работ
- •Лабораторная работа № 1 Изучение структуры программы и способов адресации мп 8086
- •Домашняя подготовка
- •Лабораторное задание
- •Варианты задания
- •Контрольные вопросы
- •Теоретическая часть
- •Способы адресации и оптимизация программ
- •Строковые команды
- •Сканирование строки.
- •Загрузка регистра из строки.
- •Сегментная структура программ (структура и образ памяти программы .Exe).
- •Двоично-десятичные числа
- •Лабораторная работа № 2. Организация доступа к дискам в режиме ms dos и анализ системных ошибок.
- •Домашняя подготовка
- •Лабораторное задание
- •Варианты заданий
- •Контрольные вопросы
- •Теоретическая часть
- •Лабораторная работа № 3. Организация прерываний и резидентные программы.
- •Домашняя подготовка
- •Лабораторное задание
- •Контрольные вопросы
- •Варианты задания
- •Теоретическая часть (См. Также разделы 1.3 и 2.4)
- •3Организация прерываний и резидентные программы.
- •Резидентные программы
- •Механизм прерываний
- •Структура и образ памяти программы .Сом
- •Примеры резидентных программ
- •Лабораторная работа № 4. Системное время в компьютерах ibm pc
- •Варианты задания
- •Домашняя подготовка
- •Контрольные вопросы
- •Теоретическая часть
- •4 Системное время в компьютерах ibm pc
- •Измерение частоты при помощи rdtsc
- •Назначение каналов таймера в ibm pc
- •Библиографический список
- •Приложение Функции ms dos для выполнения лабораторных работ
- •Установка вектора прерывания
- •Чтение вектора прерывания
- •Завершение программы
- •Создание файла
- •Закрытие файла
- •Чтение из файла
- •Очистка экрана
- •Дополнительные средства ассемблера
Чтение вектора прерывания
Входные параметры:
AH – 35h
AL – номер прерывания
Выходные параметры:
ES:BX – текущий адрес обработчика прерывания
Завершение программы
Данная функция используется для завершения работы текущей программы и передачи управления назад операционной системе.
Входные параметры:
AH – 4Ch
AL – код ошибки (можно оставить нулевым)
Выходные параметры: нет.
Отображение строки текста
Операционная система представляет простейшие возможности по выводу текстовой информации на экран.
Примечание: выводимая строка обязательно должна заканчиваться символом «$».
Входные параметры:
AH – 09h
DS:DX – адрес строки, которую надо вывести
Выходные параметры: нет
Чтение одного символа с клавиатуры
Способ 1. Чтение символа с отображением его на экране.
Входные параметры:
AH – 01h
Выходные параметры:
AL – ASCII-код считанного символа
Способ 2. Чтение символа без отображения его на экране (без эха).
Входные параметры:
AH – 08h
Выходные параметры:
AL – ASCII-код считанного символа
Примечание: коды, возвращаемые данными функциями являются ASCII-кодами, то есть номерами символов в таблице ASCII, а не скан-кодами клавиш.
Создание файла
Входные параметры:
AH – 3Ch
DS:DX – адрес строки, содержащей имя нового файла
CX – атрибуты файла (можно оставить нулем)
Выходные параметры:
Флаг CF будет установлен в случае ошибки.
Функция 3Ch прерывания 21h создает и открывает новый файл методом дескриптора файла. DS:DX должны указывать на строку, дающую путь к файлу и имя файла в стандартном формате MS DOS, включая имя диска. Строка должна завершаться байтом ASCII 0. Байт атрибутов файла поместите в CX (0 – для нормального файла). Затем выполните функцию. При успешном выполнении флаг переноса будет равен нулю, а в AX будет возвращен номер нового файла. При возникновении ошибки флаг переноса устанавливается в 1, а в AX содержится код ошибки, который может быть равен 3, если не найден путь, 4 – если уже открыты все буфера для файлов и 5 – если каталог полон или файл уже существует со статусом только для чтения. Отметим, что если в каталоге уже существует файл с таким именем, то существующий файл обрезается до нулевой длины, и тем самым разрушается.
Пример.
;в сегменте данных |
||
PATH |
DB |
'С:\LABS\OEVM\EVM-197\LAB.DAT', 0 |
;проверка наличия файла в каталоге |
||
MOV |
AH, 4Eh |
;функция поиска в каталоге |
LEA |
DX, PATH |
;DS:DX указывают на путь |
INT |
21h |
;проверка наличия файла |
JNC |
WARN_USER |
;если есть, то сообщаем |
;создание файла |
||
MOV |
AH, 3Ch |
;функция создания файла |
MOV |
CX, 0 |
;нормальные атрибуты |
INT |
21h |
;создаем файл |
JC |
OPEN_ERROR |
;уход на обработку ошибки |
MOV |
HANDLE, AX |
;запоминаем номер файла |
Открытие файла
Входные параметры:
AH – 3Dh
DS:DX – адрес строки, содержащей имя нового файла
AL – метод доступа (0 – чтение, 1 – запись, 2 – чтение/запись)
Выходные параметры:
Флаг CF будет установлен в случае ошибки.
AX – номер файла, если ошибок не было.