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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
 
(не показано 20 промежуточных версий 3 участников)
Строка 1: Строка 1:
''Данный текст взят из справки [[MK.EXE]]''
В файле исходного текста кроме операторов языка могут
В файле исходного текста кроме операторов языка могут
использоваться метки, идентификаторы, псевдооператоры и
использоваться метки, идентификаторы, псевдооператоры и
комментарии.
комментарии.


Метки
== Метки ==
Метки обозначают место на которое выполняется переход из
Метки обозначают место на которое выполняется переход из
другой части программы, также могут обозначать начало
другой части программы, также могут обозначать начало
какой-либо области памяти программ.
какой-либо области [[память программ|памяти программ]].
 
В нужном месте программы с начала строки, или по крайней мере
В нужном месте программы с начала строки, или по крайней мере
до первого оператора, записывается обозначение метки, после
до первого оператора, записывается обозначение метки, после
Строка 12: Строка 15:
символов, но различаются они только по первым 32. Двух одинаковых
символов, но различаются они только по первым 32. Двух одинаковых
меток в программе быть не должно.
меток в программе быть не должно.
В командах метка может использоваться вместо адреса перехода или
В командах метка может использоваться вместо адреса перехода или
начала области памяти.
начала области памяти.
Допустимое количество меток - не более 10000.
Допустимое количество меток - не более 10000.


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


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


Псевдооператоры
== Псевдооператоры ==
Используются для управления процессом компиляции.
Используются для управления процессом компиляции.
.ORG - устанавливает текущий адрес. Должно следовать число
 
[[.ORG]] - устанавливает текущий адрес. Должно следовать число
от 0 до 9999 или определенный ранее идентификатор
от 0 до 9999 или определенный ранее идентификатор


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


.DBB - вставляет строку байт разделяемых запятыми и соответствующих смещению
[[.DBB]] - вставляет строку байт разделяемых запятыми и соответствующих смещению
указанного адреса относительно ближайшей базы.
указанного адреса относительно ближайшей базы.
.DWB - вставляет строку двухбайтовых значений разделяемых запятыми и соответствующих
 
[[.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]] - окончание программы ГИ


.ENDP - обозначает конец программы. Весь текст ниже считается комментарием.
== Ссылки ==
(Примечание До версии 1.25 использовался оператор .END)
* [http://tinyurl.com/Pseudo-161 tinyurl.com/Pseudo-161] — короткий адрес этой страницы (через зарубежный сайт)


Макроопределения
[[Категория:MK.EXE]]
Заменяют песколько операторов и псевдооператоров.
Применяются с версии 1.25 для использования языка ГИ пользователя.
.FORM - заголовок формы ГИ
.TAB - установка начальной позиции вывода
.LDX - загрузка начальной позиции вывода по X из памяти десятичных данных
.LDY - загрузка начальной позиции вывода по Y из памяти десятичных данных
.TYPE - установка номера шрифта
.ATYPE - загрузка адреса загружаемого шрифта
.LDADR - загрузка адреса регистра для ввода числа
.SQU - вывод прямоугольника
.FRAME - вывод рамки
.DRAWR - вывод графического образа из памяти программ
.DRAWB - вывод графического образа из памяти двоичных данных
.TXTP - вывод строки символов из памяти программ
.TXTB - вывод строки символов из памяти двоичных данных
.TXTK - вывод строки символов с косвенной адресацией
.PREXP - вывод числа с естественной или плавающей запятой
.PRFORM - вывод числа в форматированном виде
.PRHEX - вывод числа в шестнадцатиричном виде
.MCALL - переход к подпрограмме в текущей форме
.RETUM - возврат из подпрограммы в текущей форме
.LCALL - переход к подпрограмме в памяти программ
.RETUL - возврат из подпрограммы в памяти программ
.JNEZ - переход, если число не равно нулю
.JM - безусловный переход
.END - окончание программы ГИ

Текущая версия от 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 — короткий адрес этой страницы (через зарубежный сайт)