Начальный курс программирования на языке Форт


ФОРТ-АССЕМБЛЕР - часть 3


Мы задали себе синтаксис написания определений машинных команд и предыдущими действиями создали средства их спецификации. Теперь можно ввести следующий текст:CODE ТЕСТ СМА ХСНG . . .

Получено слово ТЕСТ, выполняющее машинные команды СМА и XCHG. Вы можете для проверки этого слова воспользоваться словом DUMP (но ни в коем случае не инициируйте слово ТЕСТ!).

Как заканчивается CODE-определение, мы покажем позднее, а пока вернемся к определению машинных команд. У нас уже определены две команды, состоящие из восьмиразрядного кода операции. Процессор 8080 имеет довольно много команд такого типа. Поэтому нам необходимо слово для определения всех подобных команд (назовем их командами типа!) 1MI. : 1MI ( код-операции - ) CREATE С, DOES> С@ С, ;

Определим с помощью введенного слова следующие команды (первые два определения по-новому создают уже имеющиеся у нас команды):HEX 2F 1MI СМA ЕВ 1MI XCHG 00 1MI NOP 76 1MI HLT F3 1MI DI FB 1MI EI 07 IMI RLC 0F 1MI RRC 17 1MI RAL 1F IMI RAR Е9 1MI PCHL F9 1MI SPHL E3 1MI XTHL 27 1MI DAA 37 1MI STC 3F 1MI CMC C0 1MI RNZ C8 1MI RZ D0 1MI RNC D8 1MI RC Е0 1MI RPO E8 1MI RPE F0 1MI RP F8 1MI RM C9 1MI RET

Определяющее слово 1MI создает семейство команд, каждую из которых отличает уникальный код операции, но при компиляции все они ведут себя одинаково: их код заносится в словарь. Вновь образованное определение СМА функционально почти не отличается от прежнего определения через двоеточие. Единственное отличие состоит в том, что слово С, заносящее код операции в словарь, находится в части DOES> слова 1MI, а сам код (2F) - в поле параметров слова СМА.

Мы уже определили большую группу команд процессора 8080. Но остальные его команды не так просты. Например, команда ADD дополнительно вносит содержимое заданного регистра в регистр А (сумматор). Для того чтобы на обычном ассемблере 8080 добавить

содержимое регистра В к содержимому регистра А, нужно ввести ADD В

Код операции ADD в двоичной системе имеет вид 10000SSS, где SSS - три бита, используемые для указания задаваемого регистра (S означает источник).


Начало  Назад  Вперед