Язык программирования Форт



         

Глава 16. Программирование на форт-ассемблере - часть 21


Если у вас есть дисассемблер, - это упростит задачу. (Дисассемблер просматривает программу в машинных кодах и транслирует ее в мнемоническую форму, облегчая понимание программы.)

Программы в машинных кодах могут быть получены из других источников, таких как статьи в журнале и подпрограммы, встроенные в Бейсик-программы. Если у вас есть исходный текст такой программы на ассемблере, обычно проще заставить ее работать в Форте, используя Форт-ассемблер. Если это не практично, вы можете скомпилировать машинную программу в слово, описанное с помощью LABEL, используя С,. Вы должны быть уверены, однако, что программа перемещаема - т.е. она не содержит каких-либо абсолютных адресов передач управления или вызовов, поскольку адрес передачи управления почти наверняка изменится после того, как вы встроете программу в слово. Все передачи управления и вызовы должны быть относительными, т.е. заданными величиной смещения к адресу позиции, откуда производится вызов.

Но существуют исключения. Некоторые версии Форта позволяют перемещать верхнюю часть словаря Форта из области больших адресов в начальную часть памяти (смотри карту памяти в гл. 14), освобождая место для большого числа машинных программ, которые созданы для работы в верхней части памяти. Если это так, вы можете поместить машинную программу в массив и перемещать ее с помощью CMOVE в верхнюю область памяти, используя адрес обращения, предусмотренный в оригинальной версии программы. Мы использовали таким способом на TRS-80 очень сложный драйвер координатографа. Это снова потребует экспериментов.

Упражнения

1. Часто полезно сохранить регистры в стеке на время выполнения машинной программы, так что вы сможете просмотреть их содержимое при отладке программы после того, как она выполнена. Используйте LABEL для описания SAVESTACK, чтобы заносить в стек содержимое регистров АХ, ВХ, СХ и DX 8088. Исполнение SAVESTACK CALL в про грамме будет выполнять тахой перенос. Будьте осторожны, не допускайте путаницу с адресом возврата! 2.


Содержание  Назад  Вперед