Программа InFilBuf.s, представленная в листинге В.8, являет собой пример про-
извольного файлового ввода-вывода. Она допускает, что файл состоит из про-
извольного числа символьных строк, каждая из которых потенциально может
отличаться по длине от других. Сначала эта программа считывает файл и фор-
мирует таблицу, в которой запись п отражает положение начала строки п в фай-
ле. Впоследствии можно запросить конкретную символьную строку, отыскать
запись для нее в таблице и считать с помощью системных вызовов 1 seek и read.
Имя файла при стандартном вводе указывается в первой вводимой строке. Про-
грамма состоит из нескольких относительно независимых кодовых фрагментов,
которые можно адаптировать для иных целей.
Апр 19
В некоторых языках программирования существуют операторы выбора, позво-
ляющие выбирать один из нескольких возможных вариантов действий в зави-
симости от численного значения переменной. Подобного рода многовариантное
ветвление иногда оказывается полезным и в программах на языке ассемблера.
Возьмем, к примеру, набор подпрограмм системных вызовов, объединенных в
программе перехвата исключений SYS. Пример программирования многовари-
антного ветвления на языке ассемблера 8088 показан в коде программы jumptbl.s,
представленном в листинге В.7.
Апр 19
Основное назначение этого подраздела — показать механизм обработки повто-
ряющихся строковых команд. В листингах В.5 и В.6 представлены простые про-
граммы для обработки символьных строк, strngcpy.s и reverspr.s, расположенные
в папке examples.
Апр 19
Рассмотренные в предыдущих примерах программы просты и не содержат оши-
бок. В данном примере мы покажем, как трассер может помочь в отладке про-
грамм с ошибками. Наша следующая программа предназначена для вывода цело-
численного массива, определенного после метки vecl. В ее первоначальной
версии есть 3 ошибки: Для их выявления мы привлечем ассемблер и трассер, но
сначала обсудим код.
Апр 19
Наш следующий пример — vecprod.s — представляет собой небольшую програм-
му, вычисляющую внутреннее произведение двух векторов: vecl и vec2. Ее код
представлен в листинге В.З.
Листинг В.З. Программа vecprod.s
Апр 19