Псевдооператоры и метки

Материал из ПМК вики
Версия от 14:40, 4 февраля 2015; SMB (обсуждение | вклад) (Удаление ссылки через зарубежный сайт)
Перейти к навигации Перейти к поиску

Данный текст взят из справки MK.EXE

В файле исходного текста кроме операторов языка могут использоваться метки, идентификаторы, псевдооператоры и комментарии.

Метки

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

В нужном месте программы с начала строки, или по крайней мере до первого оператора, записывается обозначение метки, после которого ставится двоеточие. Длина метки может быть до 250 символов, но различаются они только по первым 32. Двух одинаковых меток в программе быть не должно.

В командах метка может использоваться вместо адреса перехода или начала области памяти.

Допустимое количество меток - не более 10000.

Идентификаторы

Могут заменять собой любое число в командах вместо адреса или номера регистра. Должны быть определены псевдооператором ".EQU". Допустимое количество идентификаторов - не более 10000.

Комментарии

Записываются в строке текста после символа точки с запятой до конца строки. Кодировка может быть 866 или 1251, текущее состояние устанавливается псевдооператором ".CHARSET".

Псевдооператоры

Используются для управления процессом компиляции.

.ORG - устанавливает текущий адрес. Должно следовать число от 0 до 9999 или определенный ранее идентификатор

.PAGE - эквивалентно .ORG со следующей страницы, параметров нет.

.OPT - параметр оптимизации. Параметр 1 разрешает использовать шестнадцатеричные адреса и номера регистров. Параметр 0 - запрещает. Другие значения зарезервированы - не использовать.

.CHARSET - кодировка русских букв. Параметр - число 866 или 1251. Влияет на разбор текста (".TEXT") и комментарии.

.EQU - устанавливает значение идентификатора равное числу. Идентификатор записывается перед оператором, число после него. Допускается не более одного определения в строке.

.DB - вводит строку байт, разделенных запятыми от этого оператора до комментария или до конца текущей строки текста. Каждое число должно быть от 0 до 255 и может быть записано как 0h - 0FFh. Допускается также использование идентификаторов и меток.

.DA - вводит строку чисел от 0 до 9999 (или до 16665 при ".OPT 1") от оператора до конца строки или до комментария. Каждое число интерпретируется как адрес и занимает 2 байта. Младший байт положение на странице (остаток от деления на сто), старший байт - номер страницы. Допускается использование меток и идентификаторов. Числа вводятся в формате BCD.

.DAH и .DAL - аналогичны ".DA", но вводят только один байт из числа - старшую или младшую часть соответственно.

.DD - вводит строку чисел от 0 до 9999 (или до 16665 при ".OPT 1") от оператора до конца строки или до комментария. Каждое число интерпретируется как адрес и занимает 2 байта. Младший байт положение на странице (остаток от деления на сто), старший байт - номер страницы. Допускается использование меток и идентификаторов. Числа вводятся в шестнадцатеричном формате.

.DDH и .DDL - аналогичны ".DD", но вводят только один байт из числа - старшую или младшую часть соответственно.

.DW - вводит строку двухбайтовых чисел от оператора до конца строки или до комментария. Числа вводятся в шестнадцатеричном формате в порядке старший-младший.

.TEXT "строка" - вводит в программу строку символов. При разборе учитывается текущая кодировка. В строке могут использоваться символы: "\n", "\r", "\t", "\\", "\0" - обозначающие перевод строки, возврат каретки, табуляцию, обратную черту и нулевой символ.

.NUM - вставляет число, идентификатор или адрес метки в программу в виде числа, записываемого в регистр X стека. Формат целого числа - десятичное или шестнадцатеричное. Дробная часть отделяется запятой. Порядок записывается после символа E. Если число или порядок отрицательны, в нужном месте ставится знак минуса.

.NUMH и .NUML - вставляют число соответствующее старшей или младшей части адреса.

.NUMT - вставляет число соответствующее адресу в диапазоне от 0 до 999.

.NUMD и .NUMI - вставляют число соответствующее адресу с одновременным уменьшением его на 1 (декрементом) или увеличением на 1 (инкрементом).

.BASE - устанавливает базу относительно которой будет вставлен адрес оператором .DBB.

.DBB - вставляет строку байт разделяемых запятыми и соответствующих смещению указанного адреса относительно ближайшей базы.

.DWB - вставляет строку двухбайтовых значений разделяемых запятыми и соответствующих смещению указанного адреса относительно ближайшей базы.

. - вставляет строку двухбайтовых значений разделяемых запятыми и соответствующих смещению указанного адреса относительно ближайшей базы.

.ENDP - обозначает конец программы. Весь текст ниже считается комментарием. (Примечание До версии 1.25 использовался оператор .END)

Макроопределения

Заменяют несколько операторов и псевдооператоров. Применяются с версии 1.25 для использования языка ГИ пользователя.

.FORM - заголовок формы ГИ

.TAB - установка начальной позиции вывода

.LDX - загрузка начальной позиции вывода по X из памяти десятичных данных

.LDY - загрузка начальной позиции вывода по Y из памяти десятичных данных

.TYPE - установка номера шрифта

.ATYPE - загрузка адреса загружаемого шрифта

.LDADR - загрузка адреса регистра для ввода числа

.SQU - вывод прямоугольника

.FRAME - вывод рамки

.DRAWP - вывод графического образа из памяти программ

.DRAWB - вывод графического образа из памяти двоичных данных

.TXTP - вывод строки символов из памяти программ

.TXTB - вывод строки символов из памяти двоичных данных

.TXTK - вывод строки символов с косвенной адресацией

.PREXP - вывод числа с естественной или плавающей запятой

.PRFORM - вывод числа в форматированном виде

.PRHEX - вывод числа в шестнадцатеричном виде

.MCALL - переход к подпрограмме в текущей форме

.RETUM - возврат из подпрограммы в текущей форме

.LCALL - переход к подпрограмме в памяти программ

.RETUL - возврат из подпрограммы в памяти программ

.JNEZ - переход, если число не равно нулю

.JM - безусловный переход

.END - окончание программы ГИ