Псевдооператоры и метки: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показано 15 промежуточных версий 3 участников)
Строка 8: Строка 8:
Метки обозначают место на которое выполняется переход из
Метки обозначают место на которое выполняется переход из
другой части программы, также могут обозначать начало
другой части программы, также могут обозначать начало
какой-либо области памяти программ.
какой-либо области [[память программ|памяти программ]].
 
В нужном месте программы с начала строки, или по крайней мере
В нужном месте программы с начала строки, или по крайней мере
до первого оператора, записывается обозначение метки, после
до первого оператора, записывается обозначение метки, после
Строка 14: Строка 15:
символов, но различаются они только по первым 32. Двух одинаковых
символов, но различаются они только по первым 32. Двух одинаковых
меток в программе быть не должно.
меток в программе быть не должно.
В командах метка может использоваться вместо адреса перехода или
В командах метка может использоваться вместо адреса перехода или
начала области памяти.
начала области памяти.
Допустимое количество меток - не более 10000.
Допустимое количество меток - не более 10000.


Строка 37: Строка 40:


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


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


[[.EQU]] - устанавливает значение идентификатора равное числу.
[[.EQU]] - устанавливает значение идентификатора равное числу.
Строка 56: Строка 59:
Каждое число интерпретируется как адрес и занимает 2 байта. Младший байт
Каждое число интерпретируется как адрес и занимает 2 байта. Младший байт
положение на странице (остаток от деления на сто), старший байт - номер
положение на странице (остаток от деления на сто), старший байт - номер
страницы. Допускается использование меток и идентификаторов. Числа вводятся в формате [[BCD]].  
страницы. Допускается использование меток и идентификаторов. Числа вводятся в [[формат BCD|формате BCD]].  


[[.DAH]] и [[.DAL]] - аналогичны "[[.DA]]", но вводят только один байт из числа
[[.DAH]] и [[.DAL]] - аналогичны "[[.DA]]", но вводят только один байт из числа
Строка 66: Строка 69:
положение на странице (остаток от деления на сто), старший байт - номер
положение на странице (остаток от деления на сто), старший байт - номер
страницы. Допускается использование меток и идентификаторов.  
страницы. Допускается использование меток и идентификаторов.  
Числа вводятся в шестнадцатеричном формате.
Числа вводятся в [[шестнадцатеричный формат|шестнадцатеричном формате]].


[[.DDH]] и [[.DDL]] - аналогичны "[[.DD]]", но вводят только один байт из числа
[[.DDH]] и [[.DDL]] - аналогичны "[[.DD]]", но вводят только один байт из числа
Строка 72: Строка 75:


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


Строка 81: Строка 84:


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


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


Строка 106: Строка 106:
(Примечание До версии 1.25 использовался оператор [[.END]])
(Примечание До версии 1.25 использовался оператор [[.END]])


== Макроопределения ==
== [[Макроопределение|Макроопределения]] ==
Заменяют несколько операторов и псевдооператоров.
Заменяют несколько операторов и псевдооператоров.
Применяются с версии 1.25 для использования языка ГИ пользователя.
Применяются с версии 1.25 для использования [[Команды языка графического интерфейса пользователя|языка ГИ пользователя]].


[[.FORM]] - заголовок формы ГИ
[[.FORM]] - заголовок формы ГИ
Строка 118: Строка 118:
[[.LDY]] - загрузка начальной позиции вывода по Y из памяти десятичных данных
[[.LDY]] - загрузка начальной позиции вывода по Y из памяти десятичных данных


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


[[.ATYPE]] - загрузка адреса загружаемого шрифта
[[.ATYPE]] - загрузка адреса загружаемого шрифта
Строка 128: Строка 128:
[[.FRAME]] - вывод рамки
[[.FRAME]] - вывод рамки


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


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


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


[[.TXTB]] - вывод строки символов из памяти двоичных данных
[[.TXTB]] - вывод строки символов из памяти двоичных данных
Строка 148: Строка 148:
[[.RETUM]] - возврат из подпрограммы в текущей форме
[[.RETUM]] - возврат из подпрограммы в текущей форме


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


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


[[.JNEZ]] - переход, если число не равно нулю
[[.JNEZ]] - переход, если число не равно нулю
Строка 157: Строка 157:


[[.END]] - окончание программы ГИ
[[.END]] - окончание программы ГИ
== Ссылки ==
* [http://tinyurl.com/Pseudo-161 tinyurl.com/Pseudo-161] — короткий адрес этой страницы (через зарубежный сайт)
[[Категория:MK.EXE]]

Текущая версия от 04:23, 21 ноября 2016

Данный текст взят из справки 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 - окончание программы ГИ

Ссылки[править]

  • tinyurl.com/Pseudo-161 — короткий адрес этой страницы (через зарубежный сайт)