logo search
TurboProlog / Документация / TOM_1

Bios/3 и bios/4

Эти предикаты дают доступ к процедурам BIOS низкого уровня. Дополни-

тельная информация об этих процедурах содержится в справочном руководстве

ДОС.

Информация передается к функции BIOS через предопределенный состав-

ной объект reg(...). Предикаты bios имеют следующий вид:

bios(InterruptNo, RegistrsIn, RegisterOut) /*(i,i,o)*/

bios(InterruptNo, RegistrsIn, RegisterOut, OutFlags)

/*(i,i,o,o)*/

где RegistersIn и RegistersOut - структуры, определенные как:

/* RegistersIn */

reg(AXi,BXi,CXi,DXi,SIi,DIi,DSi,ESi) /*(i,i,i,i,i,i,i,i)*/

/* RegistersOut */

reg(AXo,BXo,CXo,DXo,SIo,DIo,DSo,ESo) /*(o,o,o,o,o,o,o,o)*/

Предикаты bios используют следующие аргументы:

- AXi,BXi,CXi,DXi,SIi,DIi,DSi и ESi используются для записи

значений регистров , передаваемых BIOS.

- AXo,BXo,..., ESo для величин регистров, возвращаемых в BIOS.

bios/3 использует модель потока (i,i,o), а bios/4 - (i,i,o,o). Т.е.

при обращении к функции BIOS любой аргумент объекта RegistersIn должен

быть определен, а любой аргумент RegistersOut должен быть свободен.

Для предикатов типа bios Турбо Пролог предопределяет специальный тип

reg. Структуры данных типа RegistersIn и RegistersOut должны быть типа

reg. Вид домена reg:

domains

reg = reg(integer, integer, integer,...,integer)]

Употребляемый по желанию аргумент OutFlag является упакованным со-

держимым регистра состояния. Он позволяет узнать величины параметров ре-

гистра состояния после обработки прерывания. Признаки упакованы в виде

целой величины так, как показано ниже:

------------------------------------------------

U U U U O D I T S E U A U P U C

------------------------------------------------

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

------------------------------------------------

Рис.16.1. Упаковка регистра состояния процессора

8086 в виде целого числа.

Различные типы сообщений регистра состояния:

Код Имя Тип сообщения

--- --- -------------

U неопределено не используется

O переполнение указывает на арифметическое

переполнение

D направление управляет направлением

влево/вправо в повторяемых

операциях

I возможность если установлено, то есть

прерывания возможность прерывания

T ловушка создает ловушку в конце каждой

инструкции (для трассировки)

S знак если установлено, то говорит об

отрицательном результате сравнения

Z нулевой указывает на равенство, как

результат сравнения

A дополнительный необходима натройка в операциях с

двоично-десятичными числами

P равенство указывает на то, что установлено

четное число битов

C выполнение указывает арифметически выполняемый

бит