Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Bitxor/3

Выполняет побитовое исключающее логическое "или".

bitxor(X,Y,Z) /*(i,i,o)*/

Если X и Y связаны с целыми числами, то Z получается в результате

представления X и Y в двоичной форме и побитового выполнения логического

исключающего "или":

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

Operator X Y Z

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

bitxor 1 1 0

1 0 1

0 1 1

0 0 0

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

Bitleft/3

Этот предикат выполняет побитовый сдвиг влево.

bitleft(X,N,Y) /*(i,i,o)*/

При этом X представляется в виде 16-разрядного двоичного числа, за-

тем оно сдвигается влево на число разрядов, определенное в N. Оставшиеся

справа разряды заполняются нулями.

Bitright/3

Этот предикат выполняет сдвиг вправо:

bitright(X,N,Y) /*(i,i,o)*/

Если X и N связаны с целыми величинами, то Y связывается со сдвину-

тым вправо на N разрядов двоичным представлением числа X. Оставшиеся сле-

ва разряды заполняются нулями.

Упражнение:

Напишите программму и докажите, что:

myxor(A,B,Result):-

bitnot(B,NotB),bitand(A,NotB,AandNotB),

bitnot(A,NotA),bitand(NotA,B,NotAandB),

bitor(AandNotB,NotAandB,Result).

действует аналогично:

bitxor(A,B,Result)

Доступ к аппаратуре: поддержка низкого уровня.

Базовая система ввода-вывода (BIOS) операционной системы обеспечива-

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

кций, включая ввод/вывод с диска, файла, принтера, экрана. Дополнительную

информацию о ROM-BIOS можно получить в Техническом описании.

Турбо Пролог имеет 6 встроенных предикатов доступа к операционной

системе, буферам ввода/вывода и аппаратуре - это предикаты bios (2 вари-

анта), ptr-dword, memword, membite и port-byte.

Этот параграф описывает каждый из этих предикатов и содержит нес-

колько практических примеров их использования.

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 выполнение указывает арифметически выполняемый

бит

Соседние файлы в папке Документация