|
(Продолжение. Начало см. здесь)
Приведем теперь описание языка Ассемблер для СМ "Малютка".
Директивы распределения памяти
Директива | Описание |
ds n | резервируем в памяти n ячеек. Вместо n надо подставить конкретное число. Используется, например, для определения массива, который будет заполняться в процессе выполнения программы. Необходимо также и тогда, когда в программе появляется формируемая команда (число выполняется, как команда). Можно, конечно, вместо этой команды записать dw 0,0,0..., где ровно n нуликов
|
dw n | помещаем конкретное число в ячейку памяти. Вместо n это самое число и подставляется. Лучше всего числа начинать с цифры 0 (чтобы не путать с метками)
|
dw n1,n2, ... | помещаем много чисел в подряд идущие ячейки памяти |
dw <метка> | помещаем в ячейку памяти адрес ячейки, помеченной указанной меткой. Например, конструкция
...
BEGIN: dw MASSIV
...
MASSIV: dw 012,801,
...
поместит в ячейку BEGIN номер ячейки, в которой находится первый элемент массива. Вещь необходимая для программы сортировки.
|
dw <метка + n> | помещаем в ячейку памяти адрес ячейки, отстоящей на n ячеек от помеченной. Это нужно для того, чтобы, например, передать управление на неотмеченную ячейку
|
ENT | начало программы. То есть, адрес ячейки, следующей за этим словом помещается в ячейку 00.
|
Метка - это от одной до восьми латинских букв или цифир, причем первый символ - буква.
Tочка с запятой говорит о том, что после нее до конца строки идет комментарий.
Система команд
Везде, где требуется указать адрес конкретной ячейки, указывается метка. "Поскольку вы наверняка по номеру команды сразу же поймете, что она делает, мы приведем расшифровку мнемоники на заморском языке в порядке развития межпредметных связей."
LDA (...) | 0.. | LoaD Adder (загрузка сумматора); |
STA (...) | 1.. | STore Adder (сохранить сумматор); |
RADD (...) | 2.. | Rational ADDition (рациональное, то есть дробное сложение); |
NEG | 300 | NEGative (смена знака); |
ABS | 301 | ABSolute value (абсолютная величина); |
SAR | 310 | Shear Adder to the Right (сдвиг сумматора вправо); |
SAL | 311 | Shear Adder to the Left (сдвиг сумматора влево); |
JMP ... | 4.. | JuMP (прыжок - передача управления); |
RMUL (...) | 5.. | Rational MULtiplication (рациональное умножение); |
1DIV | 600 | 1 DIVide to adder (единицу делим на сумматор );
| OR (...) | 7.. | OR (или); |
AND (...) | 8.. | AND (и); |
NOT | 900 | NOT (не); |
ADD (...) | A.. | ADDition (сложение); |
MULT (...) | B.. | MULTiplication (умножение); |
IPRT | C00 | Integer PRinT (вывод на табло целого числа); |
RPRT | C01 | Rational PRinT (вывод на табло рационального числа); |
HPRT | C02 | Hexadecimal PRinT (вывод на табло шестнадцатричного числа); |
CLT | C03 | CLear Table (расчистка табло); |
BELL | C04 | BELL (звуковой сигнал); |
IN | C05 | INput (ввод с клавиатуры); |
BPRT | C10 | Binary PRinT (вывод на табло двоичного числа); |
ROLL | CFF | scROLLing (скроллинг табло - продвижение всех данных на табло на одну строку вверх. Самое верхнее значение теряется.); |
JNP ... | D.. | Jump if Not Plus (прыжок, если в сумматоре отрицательное число); |
JZ ... | E.. | Jump if Zero (прыжок, если нуль); |
HLT (...) | F00 | HaLT (стой); |
© А.И.Сенокосов, А.Г.Гейн, 1995
© Оформление Web-страницы Е.А.Еремин, 2010
|