Редактирование: Язык МК (1.24)
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 5: | Строка 5: | ||
Язык МК основан на языке программирования советских микрокалькуляторов | Язык МК основан на языке программирования советских микрокалькуляторов | ||
МК-61 и МК-52, поэтому для ознакомления можно использовать литературу по этим | |||
калькуляторам. Значительная часть программ советских калькуляторов | калькуляторам. Значительная часть программ советских калькуляторов | ||
может выполняться на МК без каких-либо изменений. | может выполняться на МК без каких-либо изменений. | ||
Основа архитектуры МК - | Основа архитектуры МК - стек, состоящий из четырех регистров: X, Y, Z и T. | ||
Большинство операций выполняются над | Большинство операций выполняются над X и Y. | ||
МК имеет 10000 ячеек памяти программ, разбитых на 100 страниц, и может обращаться | МК имеет 10000 ячеек памяти программ, разбитых на 100 страниц, и может обращаться | ||
к 10000 регистрам. Из них первые 1000 хранят десятичные числа, остальные служат | к 10000 регистрам. Из них первые 1000 хранят десятичные числа, остальные служат | ||
для работы с байтами, | для работы с байтами, текстом и обращения к дополнительным функциям. | ||
Команды МК могут быть записаны как в | Команды МК могут быть записаны как в латинской, так и в русской транскрипции. | ||
Для ручного ввода и публикации в формате HTML более привычны | Для ручного ввода и публикации в формате HTML более привычны русские | ||
обозначения. Для компилятора, по историческим причинам, предпочтительны латинские. | |||
Значение HEX Команда Описание | Значение HEX Команда Описание | ||
00-09 0-9 Ввод цифр | |||
0A , Ввод десятичной запятой | |||
0B +/- /-/ Смена знака | |||
0C EE ВП - Ввод порядка | |||
0D CX Cx - Сброс X | |||
0E ENT В^ - Ввод в стек | |||
0F F ANS F Bx - Вызов в X предыдущего результата из X1 | |||
10 + Сложение | |||
11 - Вычитание | |||
12 * Умножение | |||
13 / Деление | |||
14 <-> Обмен содержимого X и Y | |||
15 F 10^X Десять в степени X | |||
16 F EXP e(2,71828...) в степени X | |||
17 F LG Десятичный логарифм | |||
18 F LN Натуральный логарифм | |||
19 F ARCSIN Арксинус | |||
1A F ARCCOS Арккосинус | |||
1B F ARCTG Арктангенс | |||
1C F SIN Синус | |||
1D F COS Косинус | |||
1E F TG Тангенс | |||
1F Не используется | |||
20 F PI Занесение в стек числа Пи (3,14159...) | |||
21 F SQRT Квадратный корень | |||
22 F X^2 Возведение в квадрат | |||
23 F 1/X Обратная величина | |||
24 F X^Y Возведение X в степень Y | |||
25 F R Кольцевое передвижение информации в стеке | |||
26 K M->D Перевод минут в доли градуса | |||
27 K - Аварийный останов | |||
28 K PRGM К ИПРГ - Считывание байта из памяти программ * | |||
29 K / Аварийный останов | |||
2A K MS->D Перевод минут и секунд в доли градуса | |||
2B-2F Не используется | |||
30 K D->MS Перевод долей градуса в минуты и секунды | |||
31 K ABS K |x| - Абсолютное значение | |||
32 K SGN К ЗН - Определение знака числа | |||
33 K D->M Перевод долей градуса в минуты | |||
34 K INT K [x] - Выделение целой части | |||
35 K FRAC K {x} - Выделение дробной части | |||
36 K MAX Определение максимального значения ** | |||
37 K AND Логическое умножение ** | |||
38 K OR Логическое сложение ** | |||
39 K XOR Логическое сложение по модулю 2 ** | |||
3A K NOT Логическая инверсия ** | |||
3B K RAN К СЧ - Генерация случайного числа от 0 до 1 ** | |||
3C-3F Не используется | |||
40-4E M0-ME П0-ПЕ - Запись в память | |||
4F PM РП - Запись в память регистра 0-99 (+1) | |||
50 R/S С/П - Останов и пуск вычислений | |||
51 GOTO БП - Безусловный переход в пределах страницы (+1) | |||
52 RTN В/О - Возврат из подпрограммы | |||
53 GSB ПП - Переход на подпрограмму в пределах страницы(+1) | |||
54 K NOP К НОП - Нет операции | |||
55 K SCR К ЭКР - Обновление экрана * | |||
56 K GRPH К ГРФ - Вывод графической информации * | |||
57 F X!=0 Переход по условию в пределах страницы (+1) | |||
58 F L2 Цикл с R2 в пределах страницы (+1) | |||
59 F X>=0 Переход по условию в пределах страницы (+1) | |||
5A F L3 Цикл с R3 в пределах страницы (+1) | |||
5B F L1 Цикл с R1 в пределах страницы (+1) | |||
5C F X<0 Переход по условию в пределах страницы (+1) | |||
5D F L0 Цикл с R0 в пределах страницы (+1) | |||
5E F X=0 Переход по условию в пределах страницы (+1) | |||
5F Не используется ** | |||
60-6E RM 1- RM E ИП0-ИПЕ - Вызов содержимого регистра | |||
6F P RM Вызов содержимого регистра 0-99 (+1) * | |||
70-7E K X!=0 0 - K X!=0 E Косвенный переход по условию по содержимому R0-RE | |||
7F PK X!=0 Косвенный переход по условию по содержимому R0-R99 (+1) * | |||
80-8E K GOTO 0 - K GOTO E КБПR - Косвенный безусловный переход по содержимому R0-RE | |||
8F PK GOTO Косвенный безусловный переход по содержимому R0-R99 (+1) * | |||
90-9E K X>=0 0 - K X>=0 E Косвенный переход по условию по содержимому R0-RE | |||
9F PK X>=0 Косвенный переход по условию по содержимому R0-R99 (+1) * | |||
A0-AE K GSB 0 - K GSB E КППR - Косвенный переход на подпрограмму по содержимому R0-RE | |||
AF PK GSB Косвенный переход на подпрограмму по содержимому R0-R99 (+1) * | |||
B0-BE K M 0 - K M E КПR - Косвенная запись по содержимому R0-RE | |||
BF PK M Косвенная запись по содержимому R0-R99 (+1) * | |||
C0-CE K X<0 0 - K X<0 E Косвенный переход по условию по содержимому R0-RE | |||
CF PK X<0 Косвенный переход по условию по содержимому R0-R99 (+1) * | |||
D0-DE K RM 0 - K RM E КИПR - Косвенный вызов в стек по содержимому R0-RE | |||
DF PK RM Косвенный вызов в стек по содержимому R0-R99 (+1) * | |||
E0-EE K X=0 0 - K X=0 E Косвенный переход по условию по содержимому R0-RE | |||
EF PK X=0 Косвенный переход по условию по содержимому R0-R99 (+1) * | |||
F0 Не используется | |||
F1 P GOTO Р БП - Безусловный переход (+2) * | |||
F2 PP RTN PP В/О - Возврат из прерывания * | |||
F3 P GSB Р ПП - Переход на подпрограмму (+2) * | |||
F4 PP M РР П - Запись R0-R9999 (+2) * | |||
F5 Не используется | |||
F6 PP RM РР ИП - Вызов R0-R9999 (+2) * | |||
F7 P X!=0 Переход по условию (+2) * | |||
F8 PF L2 Цикл по R2 (+2) * | |||
F9 P X>=0 Переход по условию (+2) * | |||
FA PF L3 Цикл по R3 (+2) * | |||
FB PF L1 Цикл по R1 (+2) * | |||
FC P X<0 Переход по условию (+2) * | |||
FD PF L0 Цикл по R0 (+2) * | |||
FE P X=0 Переход по условию (+2) * | |||
FF Не используется | |||
* Команда отсутствовала в советских ПМК МК-61, МК-52 | |||
** Действие команды не совпадает с МК-61, МК-52 | |||
+1 После кода команды следует один байт | |||
+2 После кода команды следует два байта | |||
В файле исходного текста операторы могут записываться строчными буквами | В файле исходного текста операторы могут записываться строчными буквами | ||
и без пробелов. Допускается запись нескольких операторов в строке. | и без пробелов. Допускается запись нескольких операторов в строке. | ||
При этом следует учитывать возможные неоднозначности. | При этом следует учитывать возможные неоднозначности. | ||