Бройдо В.Л. Вычислительные системы, сети и телекоммуникации (2002) (1186248), страница 71
Текст из файла (страница 71)
АВСП-код символа предварительио должен быть помещен в регистр А1.. В регистре АН после завершеиия вывода символа возвращается признак успешности результата; ° инициировать принтер (посылка в порт служебных кодов); АН=1; ° получить состояние приитера (в регистре АН): АН=2. сз 21н 005: ° вывести па печать один символ: АН-5. АВСП-код символа предварительно записывается в регистр 0[.
Фрагмент программы печати символа «С» (АВСП- код символа «С»=43Н): щач АН. 5 щач ВС 43Н тпт 21Н Если необходимо отпечатать строку, то следует, используя это же прерываиие, организовать вывод символов в цикле, каждый раз помещая в регистр РЕ АВСП-код очередпого символа, а в конце строки и код СЯ возврата каретки (АВСП-код - 13) и/или ЕŠ— перевода строки (АВСП-код = 10). Фрагмент программы печати строки: «Я печатаю»к техт аа 'Я печатаю'. 13 пюч 51, 0 ; обнупвеи сиещение адреса сиивола в строке пюч АН 5 ргтпт: пюч ВС техт[51] ; понещаеи в О[ очередной синвал из строки техт тпт 21Н тпс 51: увеличиваеи снещение адреса символа в строке на 1 сщр ВС 13 ; сравниваем очередной символ с кодаи возврата каретки зпе рюпт Печатающее устройство имеет свой буфер, где накапливает печатаемые символы, пока ие поступит символ Сй или СЯ (поэтому возможна печать строки и в обратном иаправлеиии).
° Вывести иа печать текстовый файл: АН=40Н. Используются функции расширециого управления файлами МБ-РОВ.по файловому указателю. Пример фрагмента программы для вывода па печать текстового файла Техй содержащего 50 байт: сепг аа 50 аор( ' ' ) щоч АН. 40Н пюч ВХ, 4 ;указание устройства вывода пюч СХ. 50 :указание числа выводииых байтов зоз Элементы программирования на языке ассемблер воя рх. опяег декг :указание начального адреса ;поля паияти. содержащего текст зпт 21Н Печатающее устройство последовательного типа Основные прерывания для печатающего устройства последовательного типа: о 14Н В!05 (номер последовательного порта записывается в регистр РХ): ° инициализация параметров последовательного порта:АН=0; ° послать в порт один символ (если к порту подсоединен принтер, то и пе):АН=! др.
сз 21Н 005 (номер последовательного порта записывается в регистр РХ): ° вывести на печать один символ: АН=4. АГАСИ-код символа предварительно записывается в регистр Р1.; ° далее аналогично прерыванию 21Н 005, АН = 5 для принтера параллельного типа и др. Программирование работы с файлами Файл — выделенная по какому-либо признаку поименованная совокупность информационных записей, хранящихся на диске.
Каждой записи в пределах файла присваивается уникальный порядковый номер. Запись идентифицируется своим адресом: адрес записи - иия файла непер записи. Файловая система поддерживает два типа доступа к записям файла: СЗ последовательный метод доступа; о прямой метод доступа. Механизм доступа к файлу и его записям при программировании имеет два варианта: д доступ к файлу с использованием специальной таблицы — управляющего олока файла (гСВ); ьз доступ к файлу по идентификатору (АЯСПс). Исггользование г С В для обращения к файлу позволяет реализовать и произвольный и последовательный методы организации доступа, но часто оказывается довольно сложным, поэтому на практике, если не требуется выполнять детализированные процедуры с отдельными дорожками и секторами диска, чаще применяется обращение к файлу по идентификатору.
Прерывания, используемые при работе с файлами на дисках о Прерывания В105: ° 13Н вЂ” обмен данными с жестким диском (если «винчестера» у ПК нет, то с гибким диском); ° 40Н вЂ” обмен данными с гибким диском (если есть жесткий диск). 3О4 Глава 9, П ограммное и авление — основа автоматизации Эти прерывания обеспечивают выполнение многих функций, определяемых содержимым регистра АН и полезных при разработке дисковых утилит вспомогательных программ и средств зашиты от копирования, ибо они позволяют выполнять операции с отдельными дорожками и секторами диска.
сз Прерывание РОЗ 21Н. Имеется несколько десятков различных вариантов прерывания 21Н (определяемых содержимым регистра АН), реализующих так называемые универсальные функции управления файлами при наличии любых версий МВ-РОВ (использующих при обращении к файлам гСВ) и несколько десятков вариантов прерывания, реализующих так называемые расширенные функции управления файлами при наличии версии МЗ-РОЗ 2.0 и выше (использующих при обращении к файлам строку АБСИД).
Ниже обсуждаются лишь наиболее популярные варианты прерывания 21Н РОз, реализующие расширенные функции управления файлами. При прерываниях этого типа файл полностью идентифицируется АЗСПХ-строкой, а после открытия файла — логическим номером, присваиваемым файлу при его создании и открытии (после закрытия файла его логический номер удаляется). Сводка некоторых служебных функций РОЗ прерывания 21Н, ° АН=ЗСН вЂ” создание файла: формируются АЗСП Х-строка, идентифицирующая файл и атрибут файла; вектор-адрес АЗСП2-строки файла помещают в регистры 05 0Х, в регистр СХ помещают атрибут файла; в регистре АХ возвращается логический номер файла. ° АН=ЗВН вЂ” открытие файла: вектор-адрес АЗ СП 2-строки помещают в регистры 05: 0Х, в регистр ЯС записывается признак возможной работы с файлом (АС=О— файл открывается только для чтения, АС=1 — только для записи, АС=2 — и для чтения, и для записи); в регистре АХ возвращается логический номер файла.
° АН=ЗСН вЂ” закрытие файла (закрытие его логического номера): логический номер помешают в регистр ВХ. ° АН=ЗГН вЂ” чтение из файла: в регистр ВХ помещают логический номер, в СХ— число считываемых байтов, в 05: 0Х вЂ” вектор-адрес буфера (поля ОЗУ), отведенного для записи считываемой информации; число фактически считанных байтов возвращается в регистре АХ. ° ЯН-40 — запись в файл: в регистр ВХ помешают логический номер, в СХ вЂ” число записываемых байтов, в 05: 0Х вЂ” вектор-адрес буфера (поля ОЗУ), хранящего записываемую информацию; в АХ возвращается число фактически записанных байтов. ° АН=41 — удаление файла: в регистры 05:0Х заносится вектор-адрес АЗСПУ.- строки файла.
° АН=42 — установка указателя текущей записи в файле: в регистр ВХ заносится логический номер, в регистре АС вЂ” указание на базовую установку указателя текущей записи (ЯС=0 — начало файла, АС=1 — прежнее значение текущей записи, АС=2 — конец файла), в регистры СХ; 0Х вЂ” смешение указателя отно- 305 Элементы программирования на языке ассемблер сительно базовой установки (чаще всего 0); в регистрах ОХ гАХ возвращается смещение текущей записи файла относительно начала файла.
° АН=43 — установка нового атрибута файла: в регистры 05: ОХ заносится адрес АБСПХ-строки файла, в СХ вЂ” новый атрибут, в дС заносится «1» (если в А1.— «0», то чтение атрибута, который возвращается в СХ). ° АН=56 — переименование файла: в регистры 05. ОХ заносится адрес АЯС!1Х- строки со старым именем файла, в регистры 05:ОХ заносится адрес АБС112- строки с новым именем файла. При всех названных прерываниях при появлении ошибки в выполнении процедуры в регистре ЕС флаг СЕ устанавливается в «1»; код ошибки возвращается в регистре АХ, Ниже приводятся фрагменты программ работы с файлами по АЯС11Х-строке при следующих форматах данных: расп оь с:[т[епапе.ехс 0; А5с1!7-строка Ьц[ ОЬ 1000 Оцр[?) ; буфер обмена Пап Ои ? ; логический нонер зт'зе Оы ? ; разнер файла Чтение из файла: : Открытие файла вюч ОХ.
оттает рагб вюч ДС. 0 пю. ДН.' ЗОН тпт 21Н Зс ареп еггог пюч Пап. дХ адРес д5С!17-строки в ОХ открываем только длв чтения функция открытия файла код прерывания еслм СЕ-1,- обработка ошибки открытив файла запись логического ппнера установки указателя функция чтения из файла запись потическото нонера запись разнера файла запись адреса буфера обнена код прерывания чтения из файла Определение размера файла: шоч АН 42Н щоч АС, 2 пюч ВХ Пап пюч СХ.
0 щоч ОХ, 0 тпт 21Н Зс рати[ еггог1 пюч з!Хе, АХ Установка указателя в начало пюч АН, 42Н пюч ДС 0 коч СХ 0 яюч ОХ, 0 тпт 21Н Зс ротпт еггог2 : если СЕ-1,- обработка ошибки Чтение файла: пюч ДН, ВЕН щоч ВХ. Пап пюч СХ. вые пкв ОХ. оттает Ьцт шт 21Н зс геаа еггаг , если СЕ=1, — обработка ошибки ; установка указателв текущей позиции ; код установки в конец файла ; запись логического ппнера ; смещение - 0 ; снещение - 0 , код прерывания : если СЕ=1.- обработка ошибки установки указателя : запись разнера файла файла: .
установка указателя текущей позиции ; код установки в начало файла ; сиещение - 0 . снещение " 0 : код прерывания зоб Глава 9. П ог аммное уп веление — основа автоматизации Закрытие файла: вюч ВХ. Лап люч АН, ЗЕН мт 21Н Зс с1озе егго г , если СГ-1.- обработка ошибки заир Запись в файл: СЗ Полная перезапись файла. ; Открытие (создание1 файла люч Ох, оггзет рата люч СХ, 0 люч АН, ЗСН тпт 21Н Зс орел еггог вюч Пап. АХ ; Залпе~ в файл 500 байт ЛН, 40Н люч ВХ. Пап люч СХ 500 люч ОХ. оттает Сот тпт 21Н Зс ыгтте еггог 0 Добавление записей в файл. : Открьпие файла воч ОХ оттает ратл люч АС.
1 люч АН. ЗОН тпт 21Н Зс орел еггог люч Пап, АХ : установка указателя в конец файла коч Вх, дХ воч СХ. 0 люч ОХ 0 воч ДС. г люч АН, 42Н тпт 21Н Зс розит еггог : Запись в файл 300 байт люч АН. 40Н люч ВХ Пап воч СХ. ЗОО воч Ох. оттзес оцг тпт 21н Зс иг1те еггог запись логического нокера функция закрытия файла код прерывания ытия файла Некоторые аспекты создания исполняемых программ Язык ассемблера удобен тем, что, с одной стороны, он позволяет писать програм- мы на уровне команд микропроцессора, с другой стороны, не требует использова- ния и, соответственно, запоминания множества числовых кодов этих команд.
307 Элементы программирования на языке ассемблер Процедуры формирования программы Последовательность процедур формирования программы показана на рис. 9.4. Исходный файл (азпт) Ассемблнрованне- (МАЗМ) Объектный файл (.оь)) Загрузка (ь1ЫК) Исполняемый файл (еке) Рнс. 9,4. Последовательность процедур формирования программы 1. Составление программы и ее ввод под каким-нибудь именем на диск (дискету). При вводе программы используется любой текстовый редактор, например редактор )ч С. 2. Трансляция (ассемблирование) программы.