Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BorlandPascal.doc
Скачиваний:
55
Добавлен:
17.03.2015
Размер:
2.83 Mб
Скачать

Часть IV. Использование Borland Pascal с языком ассемблера Глава 24. Встроенный ассемблер

Встроенный ассемблер Borland Pascal позволяет вам непосредс-

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

8087/8087 и 80286/80287. Вы, конечно, если требуется чередовать

код Паскаля и ассемблера, можете преобразовать код ассемблера в

машинные инструкции вручную и воспользоваться затем операторами

inline, либо выполнять компоновку с файлами .OBJ, которые содер-

жат внешние процедуры и функции (external).

Встроенные операторы ассемблера представляют собой большое

подмножество синтаксиса, поддерживаемого Турбо Ассемблером и Мак-

роассемблером фирмы Microsoft. Встроенный ассемблер поддерживает

все коды операций процессором 8086/8087 и 80286/80287 и некоторые

из операций, используемых в выражениях Турбо Ассемблера.

За исключением директив DB (определить байт), DW (определить

слово) и DD (определить двойное слово) никакие другие директивы

Турбо Ассемблера, типа EQU, STRUC, SEGMENT или MACRO, встроенным

ассемблером не поддерживаются. Однако, операции, реализуемые с

помощью директив Турбо Ассемблера, близко соответствуют конструк-

циям Borland Pascal. Например, большинство директив EQU соответс-

твуют описаниям Borland Pascal const, var и type, директива PROC

- описаниям procedure и function, а директива STRUC - типам

record Borland Pascal. Фактически, встроенный ассемблер Borland

Pascal можно рассматривать, как компилятор языка ассемблера, ис-

пользующий для всех описаний синтаксис Паскаля.

Оператор asm

Встроенный ассемблер становится доступным с помощью операто-

ров asm. Оператор asm имеет следующий синтаксис:

asm оператор_ассемблера < разделитель оператор_ассемблера > end

где "оператор_ассемблера" представляет собой оператор ассемблера,

а "разделитель " - это точка с запятой, новая строка или коммен-

тарий Паскаля. Приведем некоторые примеры операторов asm:

asm

mov ah,0 { считать с клавиатуры код функции }

int 16H { для чтения клавиши вызвать BIOS }

mov CharCode,al { сохранить код ASCII }

mov ScanCode,ah { сохранить код опроса }

end;

asm

push ds { сохранить DS }

lds si,Source { загрузить указатель источника }

les di,Dest { загрузить указатель приемника }

mov cx,Count { загрузить размер блока }

cld { переместить }

rep movsb { скопировать блок }

pop ds { восстановить DS }

end;

Заметим, что на одной строке можно разместить несколько опе-

раторов ассемблера, разделив их точками с запятой. Кроме того

следует отметить, что если операторы ассемблера размещаются на

разных строках, разделять их точками с запятой не требуется. За-

метим также, что точка с запятой не говорит о том, что остальная

часть строки представляет собой комментарий. Комментарии следует

записывать, используя синтаксис Паскаля: с помощью { и } или (* и

*).

Соседние файлы в предмете Программирование на Pascal