Бройдо В.Л., Ильина О.П. Архитектура ЭВМ и систем (2006) (1186249), страница 84
Текст из файла (страница 84)
3. Чтение состояния клавиатуры: АН - ОВЬ. В регистр АС записывается О, если в буфере клавиатуры содержится хотя бы один символ. 4. Очистка буфера клавиатуры и вызов функции: АН - ОСЬ. Обнуляется буфер клавиатуры и инициируется выполнение одной из 5 функций прерывания 21Н; в этом случае номер вызываемой функции должен быть записан не в регистре АН, а в регистре АС (АС - 1, 6, 7, 8 или ОАЬ).
5. Ввод с клавиатуры (из файла через логический номер): АН = ЗЕЬ. Используется функция расширенного управления файлами М5 1)05 по файловому указателю. Ниже приведен пример фрагмента программы для ввода с клавиатуры 50 байт, 1ехт ОЬ 50 бор(' ') : задание поля паияти для ввода аоч АН. ЗГН яоч ВХ, 0 ; указание устройства ввода точ СХ. 50 ; указание числа вводимых байтов яоч ОХ, оттвег техт : указание начального адреса ; поля паняти дпя ввода тпт 21Н Программирование работы с принтерами При работе с печатающими устройствами могут быть использованы прерывания: 14Н и 17Н В)ОБ и 21Н (АН = 4 и 5) 1)05. Следует различать программирование для печатающих устройств параллельного типа (информация передается на принтер побайтово по 8-битовой шине) и печатающих устройств последовательного типа (информация передается по одному проводу последовательно по одному биту), подсоединяемых к любому последовательному порту микропроцессора.
Печатающие устройства параллельного типа СО прерывание 17Н В1ОБ (номер принтера предварительно указывается в регистре ОХ): 381 Программирование работы с принтерами О послать один символ в устройство печати: АН - О. АБСП-код символа предварительно должен быть помещен в регистр А[ В регистре Ан после завершения вывода символа возвращается признак успешности результата; О инициировать принтер (посылка в порт служебных кодов): АН - 1; О получить состояние принтера (в регистре АН): АН = 2.
О прерывание 21Н [105, АН - 5: О вывести на печать один символ: АН = 5. А5СП-код символа предварительно записывается в регистр 0С. Фрагмент программы печати символа «С» (АБСП-код символа «С» равен 43Ь): яюч АН, 5 щоч О[. 43Н 1пт 21Н Если необходимо отпечатать строку, то следует, используя зто же прерывание, организовать вывод символов в цикле, каждый раз помещая в регистр 1ЗС АБСП-код очередного символа, а в конце строки и код СК возврата каретки (АЗСП-код = 13) и/или [.à — перевода строки (АБСП- код = 10). Фрагмент программы печати строки: «Я печатаюм Секс бЬ 'Я печатаю'. 13 щоч 51, 0 : обнуляеи сиещенне адреса снивола в строке щоч АН, 5 ргзпс: яюч 0[, секс[51] ; лоиещаеи в ОС очередной снивол из строки сехт 1пт 21Н 1пс 51; увеличиваеи сиещение адреса символа в строке на 1 сщр ОС, 13 : сравниваеи очередной сиивол с кодои возврата каретки бпе ргтпт Печатающее устройство имеет свой буфер, где накапливает поступающие символы, пока не дождется символа СК или [.Г (поэтому возможна печать строки и в обратном направлении).
О вывести на печать текстовый файл: АН - 40Ь. Используются функции расширенного управления файлами М5 005 по файловому указателю. Пример фрагмента программы для вывода на печать текстового файла, содержащего 50 байт: Сехв бЬ 50 пир(' ') щоч АН, 40Н еоч ВХ, 4 ; указание устройства вывода яюч СХ. 50 ; указание числа выводиных байтов щоч ОХ. оттает Секс : указание начального адреса ; поля паияти. содержащей теист зпв 21Н 382 Глава 18. Элементы программирования нв языке ассемблера Печатающие устройства последовательного типа [З прерывание 14Н В105 (номер последовательного порта записывается в регистр 0Х): О инициализация параметров последовательного порта: АН - 0; О послать в порт один символ (если к порту подсоединен принтер, то и печать): АН - 1 и др.
О прерывание 21Н 1)05, АН - 4 (номер последовательного порта записывается в регистр РХ); О вывести на печать один символ: АН - 4. А5СП-код символа предварительно помещается в регистр 01; О далее аналогично прерыванию 21Н 005, АН - 5 для принтера параллельного типа и др. Программирование работы с файлами Файл — выделенная по какому-либо признаку поименованная совокупность информационных записей, хранящихся на диске.
Каждой записи в пределах файла присваивается порядковый (тем самым уникальный) номер. Запись идентифицируется своим адресом: адрес записи = иия файла:ноиер записи. Файловая система поддерживает два типа доступа к записям файла: О последовательный метод доступа; О прямой метод доступа. Механизм доступа к файлу и его записям при программировании также имеет два варианта: О доступ к файлу с использованием специальной таблицы — управляющего блока файла (гСВ); О доступ к файлу по идентификатору (А5СП2) и логическому номеру.
Использование гСВ для обращения к файлу позволяет реализовать и произвольный, и последовательный методы организации доступа, но часто оказывается довольно сложным, поэтому на практике, если не требуется выполнять детализированные процедуры с отдельными дорожками и секторами диска, чаще применяется обращение к файлу по идентификатору.
Прерывания, используемые при работе с файлами на дисках О Прерывания В105: О 1ЗН вЂ” обмен данными с жестким диском (при его отсутствии — с гибким диском); О 4ОН вЂ” обмен данными с гибким диском (если есть жесткий диск). Программирование работы о файлами 383 Эти прерывания обеспечивают выполнение многих функций, определяемых содержимым регистра АН и полезных при разработке вспомогательных программ и средств зашиты от копирования, поскольку они позволяют выполнять операции с отдельными дорожками и секторами диска. (з Прерывание 1)08 21Н. Имеется несколько десятков различных вариантов прерывания 21Н (определяемых содержимым регистра АН), реализующих так называемые универсальные функции управления файлами при наличии любых версий МЗ 1)08 (использующих при обращении к файлам ЕСВ) и несколько десятков вариантов прерывания, предоставляющих так называемые расширенные функции управления файлами при наличии версии М8 РО8 2.0 и выше (через строку АЗСП2).
Далее обсуждаются лишь наиболее популярные варианты прерывания 21Н РОЗ, реализующие расширенные функции управления файлами. При прерываниях зтого типа файл полностью идентифицируется АЗСП2-строкой, а после открытия файла — логическим номером, присваиваемым файлу при его создании и открытии (после закрытия файла его логический номер освобождается). Вот сводка некоторых служебных функций 1)08 прерывания 21Н: О АН - ЗСЬ вЂ” создание файла: формируются АЗСПЕ-строка, идентифицирующая файл, и атрибут файла; вектор-адрес АЗСП2-строки файла помещают в регистрьг 08:0Х, в регистр СХ помещают атрибут файла; в регистре АХ возвращается логический номер файла.
О АН = ЗОЬ вЂ” открытие файла: вектор-адрес АЗСП2-строки помещают в регистры 08:0Х, в регистр А1. записывается признак возможной работы с файлом (А~ = 0 — файл открывается только для чтения, А1. - 1 — только для записи, А~ - 2 — и для чтения, и для записи); в регистре АХ возврашается логический номер файла. О АН = ЗЕЬ вЂ” закрытие файла (высвобождение его логического номера): логический номер помещают в регистр ВХ. О АН = ЗРЬ вЂ” чтение из файла: в регистр ВХ помешают логический номер, в СХ вЂ” число считываемых байтов, в 08:0Х вЂ” вектор-адрес буфера (поля ОЗУ), отведенного для записи считываемой информации; число фактически считанных байтов возврашается в регистре АХ. О АН - 40Ь вЂ” запись в файл: в регистр ВХ помещают логический номер, в СХ вЂ” число записываемых байтов, в 08:0Х вЂ” вектор-адрес буфера (поля ОЗУ), храняШего записываемую информацию; в АХ возвращается число фактически записанных байтов.
О АН = 41Ь вЂ” удаление файла: в регистры 08;0Х заносится вектор-адрес АЗСП2-строки файла. О АН - 42Ь вЂ” установка указателя текущей записи в файле: в регистр ВХ заносится логический номер, в регистр А~ — указание на базовую установку указателя текущей записи (А1 " 0 — начало файла, А~ - 1 — прежнее значение текушей записи, А1.
= 2 — конец файла), в регистры сх:0х — смещение указа- 384 Глава те. Элементы программирования на языке ассемблера Чтение из файла: ; Открытие файла шоч ОХ, оттзеС раСЬ шоч АС. 0 шоч АН, ЗОН тпС 21Н бс орел еггог шоч Ьапб1е. ЯХ адрес А5С117-строки в ОХ открываем только для чтения функция открытия файла выполнение прерывания если СГ=1, обработка ошибки открытия файла запись логического номера Определение размера файла; щоч АН. 42Н шоч АС. г шоч ОХ.
Ьапб1е шоч СХ, 0 шоч ОХ, 0 тпт 21Н бс ротпс еггог1 шоч зтше, АХ установка указателя текущей позиции код установки в конец файла запись логического нонера снещение = О снещение = 0 выполнение прерывания если СЕ=1. обработка ошибки установки указателя запись разиера файла Установка указателя в начало шоч АН, 42Н шоч АС. О шоч СХ, О шоч ОХ. О тпг 21Н бс ротпс еггог2 файла: установка указателя текущей позиции код установки в начало файла смещение - О смещение - О выполнение прерывания если СГ=1. обработка ошибки установки указателя Чтение файла: теля относительно базовой позиции (чаще всего О); в регистрах РХ:АХ возвращается смешение текущей записи файла относительно начала файла. О АН - 43)т — установка новых атрибутов файла: в регистры 08:0Х заносится адрес А8С112-строки файла, в СХ вЂ” значения атрибутов, в АС находится «1» (если в А1, — «О», то происходит чтение атрибутов, которые возвращаются в СХ).