Читать «Assembler. Программирование на языке ассемблера IBM PC» онлайн - страница 169

Unknown Author

Далее. В состав ОС (имеется в виду дисковая операционная система фирмы Microsoft - MS DOS) входит много процедур и для них не хватает допустимых номеров прерываний. В связи с этим процедуры объединяются в группы С тем, чтобы процедуры из одной группы вызывались по прерыванию с одним и тем же номером. Процедуры одной группы принято называть функциями соответствующего прерывания. Чтобы различать их, перед выполнением команды INT в регистр АН записывают номер нужной функции:

MOV АН,<номер фушсции>

INT <номер прернвания>

Получив по команде INT управление, ОС по номеру из регистра АН определяет, к какой именно функции произошло обращение, после чего и передает управление ей.

Для выполнения функции может потребоваться определенная информация (например, для функции вывода символа на экран нужно указать код этого символа). Такая информация передается через регистры. Какие именно параметры надо передавать и через какие регистры - зависит от конкретной функции, общих правил здесь нет.

Мы не будем перечислять номера всех прерываний и функций ОС, это можно найти в многочисленных книгах по MS DOS. Мы рассмотрим лишь некоторые функции, реализующие ввод-вывод и окончание счета программы, - те, на основе которых чуть позже будут определены операции ввода-вывода, которыми мы пользуемся в данной книге. Отметим, что все они являются функциями прерывания с шестнадцатеричным номером 21 (десятичным 33).

13.2.3. Некоторые функции прерывания 21h

Завершение программы

Завершив все свои действия, программа обязана вернуть управление операционной системе, чггобы пользователь мог продолжить работу на ПК. Такой возврат, соответствующий операции "завершить программу", реализуется функцией 4Ch прерывания 21h:

MOV АЬ,<код за»ершевия>

MOV АН,4СЬ INT 21h

Каждая программа, вообще говоря, обязана сообщить, успешно или нет она завершила свою работу. Дело в том, что любая программа вызывается из какой-то другой программы (например, из операционной системы), и иногда вызвавшей программе, чтобы правильно продолжить работу, надо знать, выполнила ли вызванная программа все, что надо, или она проработала с ошибкой. Такая информация передается в виде кода завершения программы (некоторого целого числа), который должен быть нулевым, если программа проработала правильно, и* ненулевым (каким именно - оговаривается в каждом случае особо) в противном случае. (Узнать код завершения вызванной программы можно с помощью функции 4Dh прерывания 21h.) Потребуется этот код или нет, программа все равно должна выдать его.

Вывод на экран (е текстовом режиме)

Для вывода одного символа на экран ПК используется функция 02 прерывания 21h:

MOV ПЬ,<код выводимого символа>

MOV АН,2 INT 21Ь

Выводимый символ высвечивается в позиции курсора (что бы там ни было записано), после чего курсор сдвигается на одну позицию вправо. Если курсор находился в конце строки экрана, то он перемещается на начало следующей строки, а если курсор был в конце последней строки экрана, то содержимое экрана сдвигается на одну строку вверх, а внизу появляется пустая строка, в начало которой и устанавливается курсор.