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



         

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


Как мы видели, мнемоника - это просто слова, которые записывают одну или более машинных команд в тело слова CODE. Некоторые мнемокоды работают сами по себе, другие требуют аргументов, таких как имена регистров, для того чтобы скомпилировать соответствующий машинный код. Описание мнемоники может быть простым или сложным, в зависимости от числа необходимых аргументов и от количества машинных команд, которые она должна скомпилировать. Команда RET (возвращение из подпрограммы) для 8088 является однобайтовой инструкцией, не требует аргументов и может быть описана простым мнемокодом. Она описывается как : RET ( -) C3 С, ; Но поскольку существует большее число мнемоник с однозначным соответствием между мнемокодом и однобайтовой инструкцией без каких-либо аргументов, для формирования такой мнемоники лучше иметь слово-описатель ; 0ARGMAKE CREATE С, DOES> С@ С, ; После этого можно сформировать таблицу мнемоники следующим образом: C3 0ARGMAKE RET CE 0ARGMAKE INTO 90 0ARGMAKE NOP CF 0ARGMAKE IRET 9C 0ARGMAKE PUSHF 9D 0ARGMAKE POPF и т. д.

Мнемоника ассемблера, требующая одного аргумента, немного сложнее. К счастью, в, конструкции машинных команд существует логика. Для микропроцессора 8088 большинство мнемокодов, которые используют в качестве аргумента номер только одного регистра, формируют машинную инструкцию, где номер регистра закодирован в младших трех разрядах. Таким образом, в двоичном представлении инструкция DX POP имеет вид 01011010, где младшие разряды 010 указывают на регистр DX. Инструкция POP может быть сформирована путем добавления номера регистра к значению 01011000 - или в шестнадцатеричном представлении к 58. (Если вы вспомните восьмеричное счисление, вы сможете понять, что регистры и инструкции могут быть очень удобно представлены в восьмеричном виде. DX POP будет соответствовать 132, где 13 указывает на POP, a 2 - на регистр DX). PUSH будет формироваться путем добавления номера регистра к 01010000 или 50 в шестнадцатеричном представлении. XCHG будет соответствовать сумме номера регистра и 10010000 или 90 в шестнадцатеричном виде.


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