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

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


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


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


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


Псевдооператоры
== Псевдооператоры ==
Используются для управления процессом компиляции.
Используются для управления процессом компиляции.
.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]].  


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


Строка 99: Строка 108:
смещению указанного адреса относительно ближайшей базы.
смещению указанного адреса относительно ближайшей базы.


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


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

Версия от 09:50, 23 марта 2014

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

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


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

Метки

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

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

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

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

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

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

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

.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 - вывод рамки .DRAWR - вывод графического образа из памяти программ .DRAWB - вывод графического образа из памяти двоичных данных .TXTP - вывод строки символов из памяти программ .TXTB - вывод строки символов из памяти двоичных данных .TXTK - вывод строки символов с косвенной адресацией .PREXP - вывод числа с естественной или плавающей запятой .PRFORM - вывод числа в форматированном виде .PRHEX - вывод числа в шестнадцатиричном виде .MCALL - переход к подпрограмме в текущей форме .RETUM - возврат из подпрограммы в текущей форме .LCALL - переход к подпрограмме в памяти программ .RETUL - возврат из подпрограммы в памяти программ .JNEZ - переход, если число не равно нулю .JM - безусловный переход .END - окончание программы ГИ