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



         

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


Номера регистров можно определить через константы. Так, для микропроцессора 8088

0 CONSTANT AX 4 CONSTANT SP 1 CONSTANT CX 5 CONSTANT BP 2 CONSTANT DX 6 CONSTANT SI 3 CONSTANT BX 7 CONSTANT DI Теперь может быть сконструировано слово-описатель для одноаргументных мнемокодов: : 1ARGMAKE CREATE С, DOES> С@ + С, ; а мнемоника формируется в другой таблице: 58 1ARGMAKE POP 50 1ARGMAKE PUSH 90 1ARGMAKE XCHG 40 1ARGMAKE INC и т.д. Теперь, поскольку действие этих производных слов заключается в добавлении числа из стека к их базовому значению и поскольку номер регистра можно занести в стек с помощью констант, которые мы описали, вы можете использовать конструкции типа SI PUSH, чтобы добавить 6 к 50 и занести результирующее число 56, соответствующее машинной инструкции, в описании слова типа CODE.

Использование мнемоники, описанной только таким способом, даст очень ограниченный, хотя и применимый, поднабор инструкций 8088. Для получения более полного набора команд ассемблера вы должны позволить мнемонике иметь переменное число аргументов, генерировать две и более машинные команды, устанавливать определенные разряды в нужное состояние, чтобы сообщить, например, что содержимое регистра следует рассматривать как байт или как пару байтов. Наша задача не в том, чтобы предложить вам программу ассемблера для 8088, а в том чтобы изложить, как это можно сделать. Если у вас есть ассемблер для вашей ЭВМ, вы можете для лучшего понимания просмотреть его исходные тексты.

Микропроцессоры имеют много разных условных инструкций, работа которых зависит от значений флагов. Флаги - это двоичные разряды регистров, обычно называемых регистрами состояния. Значения разрядов в регистре состояния определяется различными действиями. Например, флаг может быть установлен р результате арифметического переполнения, при сравнении содержимого двух регистров (например, с помощью мнемокода СМР для 8088), если результат вычитания равен 0, или в результате каких-то других операции. Например, операция AX DX СМР установит флаг Z (нуль) в единичное состояние, если значения содержимого регистров АХ и DX равны.


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