
- •Федеральное государственное бюджетное
- •1 Используемое оборудование и программное обеспечение 5
- •2 Общая подготовка к выполнению практических заданий 5
- •3 Общий ход выполнения практических заданий 6
- •4 Основные теоретические положения по программированию устройств персональных компьютеров на языке ассемблера 6
- •5 Процесс ассемблирования и выполнения программы 43
- •Введение
- •1 Используемое оборудование и программное обеспечение
- •2 Общая подготовка к выполнению практических заданий
- •3 Общий ход выполнения практических заданий
- •4 Основные теоретические положения по программированию устройств персональных компьютеров на языке ассемблера
- •4.1 Прерывания и механизм их обработки
- •4.2 Организация работы с файлами
- •4.2.1 Управление дисками и каталогами
- •1) Установка/ проверка дискового накопителя по умолчанию.
- •2) Определение доступного дискового пространства.
- •3) Создание/ удаление подкаталога.
- •4) Получение/ изменение текущего каталога.
- •4.2.2 Подготовка файлов к операциям чтения/ записи
- •1) Создание/ удаление файла.
- •2) Открытие/ закрытие файла.
- •3) Получение/ изменение атрибутов файла.
- •4) Переименование файла.
- •4.2.3 Чтение, запись, позиционирование в файле
- •4.2.3 Организация поиска файлов
- •4.3 Управление клавиатурой
- •4.4 Управление выводом информации на дисплей
- •4.4.1 Вывод символов на экран в текстовом режиме
- •4.4.2 Управление курсором
- •4.4.3 Вывод точечной графики
- •4.5 Управление таймером
- •4.5.1 Работа со счётчиком времени суток
- •4.5.2 Генерация звука
- •4.6 Управление прерываниями. Написание собственного прерывания.
- •4.7 Управление «мышью»
- •5 Процесс ассемблирования и выполнения программы
- •5.1 Получение исполняемого модуля
- •5.2 Работа с отладчиком программ turbo debugger
- •1 2 3 5 4
- •6 Программа на языке ассемблера
- •6.1 Структура программы
- •6.2 Примеры программ
- •7 Практическое занятие № 1. Управление дисплеем. Вывод символов ascii на экран
- •7.1 Цель практического занятия
- •7.2 Контрольные вопросы
- •10 Практическое занятие № 4. Управление клавиатурой. Ввод строки символов
- •14 Практическое занятие № 8. Управление мышью
- •14.1 Цель практического занятия
- •14.2 Контрольные вопросы
- •14.3 Практическое задание
- •15 Практическое занятие № 9. Управление прерываниями. Написание собственного прерывания
- •Приложение а
1) Установка/ проверка дискового накопителя по умолчанию.
Программы могут экономить часть работы, назначая дисковый накопитель, на котором хранятся каталоги и файлы данных, по умолчанию /1-5/.
1.1) Для установки дискового накопителя по умолчанию необходимо в регистр AH записать функцию 0Eh, в регистр DL поместить номер диска (00h – A, 01h – B и т.д.), вызвать прерывание 21h. Эта функция возвращает в регистре AL максимально возможный в данной системе номер диска.
1.2) Функция 19h прерывания 21h сообщает о том, какой дисковый накопитель установлен по умолчанию, возвращая номер диска в регистре AL (00h – A, 01h – B и т.д.). Входных регистров для данной функции нет.
2) Определение доступного дискового пространства.
Программа должна контролировать доступное дисковое пространство и сообщать пользователю о нехватке места. В этом случае пользователь может выйти из программы и устранить ошибку без потери информации /1-5/.
Для
получения информации о свободном
дисковом пространстве необходимо в
регистр AH
записать функцию 36h,
в регистр DL
поместить номер диска (00h
– текущий
накопитель, 01h
– А и т.д.),
вызвать прерывание 21h.
При возврате регистр AX
содержит или код ошибки FFFFh,
если в регистре DL
был указан неправильный номер устройства,
или количество секторов в одном кластере,
если ошибки не возникло; BX
содержит число свободных кластеров; CX
- размер сектора в байтах, DX
– общее число кластеров на диске.
Используя эту информацию, можно посчитать
свободное пространство на диске ()
и полный объём диска (
).
3) Создание/ удаление подкаталога.
Программа может создавать и удалять подкаталоги только при соблюдении определённых условий. Для создания подкаталога необходимо, чтобы было хотя бы одно пустое место в корневом каталоге. Для удаления подкаталога необходимо, чтобы он не содержал ссылок на другие подкаталоги и файлы (был пустым). Кроме того, нельзя удалить текущий каталог, в котором по умолчанию выполняются все операции над подкаталогами. Также нельзя удалить корневой каталог /1-5/.
3.1) Для создания подкаталога необходимо, чтобы пара регистров DS:DX указывала на строку, содержащую имя накопителя и путь к каталогу, в котором нужно создать подкаталог. Строка должна заканчиваться байтом ASCII 0. Последнее имя пути – имя создаваемого подкаталога. Все перечисленные имя каталогов до создаваемого нового должны существовать. Далее в регистр AH требуется поместить функцию 39h и вызвать прерывание 21h. Если указан правильный путь, то будет создан новый каталог. В противном случае будет установлен флаг переноса CF, а в регистре AX будет содержаться код ошибки: 3 – несуществующий путь; 5 – доступ запрещён.
3.2) Для удаления подкаталога необходимо, чтобы пара регистров DS:DX указывала на строку, содержащую путь к удаляемому подкаталогу. Затем в регистр AH требуется поместить функцию 3Ah и вызвать прерывание 21h. Если указан правильный путь, то будет удалён заданный подкаталог. В противном случае будет установлен флаг переноса CF, а в регистре AX будет содержаться код ошибки: 3 – несуществующий путь; 5 – доступ запрещён; 10h – попытка удаления текущего каталога.