Работа ПМБР отличается от работы классической МБР тем, что у нее присутствует возможность параллельного выполнения заданных программ. То есть, в один и тот же момент времени могут выполняться разные команды. В связи с этим, система команд для МБР была расширена некоторыми новыми командами, такими как: запуск программы с последующим параллельным ее выполнением, запись в регистр значения с устройства ввода, запись значения регистра в устройство вывода, блокирование регистра с целью монопольного доступа к нему процессом-блокиратором, разблокировка регистра. Полный список команд для ПМБР имеет следующий синтаксис:
S(n) // Увеличение значения регистра n на 1
T(n, m) // Копирование значения регистра n в регистр m
Z(n) // Обнуление значения регистра n
J(n, m, k) // Условный переход. Если значения регистров m и n равны, то переход к команде с номером k
s(prog, n) /* Запуск программы prog в отдельном потоке и ассоциация её выполнения с регистром-индикатором n.
Перед началом выполнения программы регистр n обнуляется, после выполнения программы в него
заносится единица */
I(n) // Запись значения с устройства ввода с последующей записью его в регистр n
O(n) // Чтение значения регистра n и запись его в устройство вывода
G(n) // Блокировка регистра с номером n с целью монопольного обращения к нему процессом-блокиратором
P(n) // Разблокировка регистра с номером n и разрешение доступа к нему другим процессам
ПРИМЕР
unit Main // Объявление модуля. unit - ключевое слово, Main - название.
entry main // Объявление точки входа.
{
I(0) // Чтение числа в регистр 0
s(test1, 10) // Запуск программы test1 в параллельном процессе и сопоставление с ней регистра-индикатора с номером 10
s(test2, 11) // Запуск программы test2 в параллельном процессе и сопоставление с ней регистра-индикатора с номером 11
}
program test1 // Объявление программного блока
{
S(0) // Инкремент регистра 0
}
program test2
{
T(0, 1) // Копирование значения из регистра 0 в 1
S(1) // Инкремент значения в регистре 1
}