Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учеб. пособие по ОЭВМ.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
4.34 Mб
Скачать

Оператор - пауза: pause

оператор пауза имеет следующий формат:

PAUSE;

Этот оператор приостанавливает выполнение программы и выводит на терминал сообщение: "Приостановлено. Нажмите клавишу ENTER..." После нажатия клавиши ENTER выполнение программы возобновляется с оператора, следующего за оператором PAUSE.

Оператор - вывод: write writeln

формат операторов вывода определяется следующими правилами:

оператор предназначен для вывода информации на терминал, выводимую информацию можно разделить на две части: пояснительный текст (строки в кавычках) и значения выражений.

Допускается три формата вывода значения выражений:

- двоичный (спецификатор формата $B),

- десятичный (спецификатор формата $D),

- шестнадцатеричный (спецификатор формата $H).

Указание спецификатора формата и длины поля вывода обязательно!

Следующая за спецификатором формата константа определяет размер поля вывода для значения выражения. При выводе значений в двоичной и шестнадцатеричной СС если размер поля больше, чем размер реально выводимого числа, то число дополняется слева нолями. При выводе значений в десятичной СС число дополняется слева пробелами. Если выводимое число больше по размеру, чем выделенное поле, то оно усекается слева.

Например:

I:=0HFFFF; {I:=65535}

WRITE $B32 I {На выходе> 00000000000000001111111111111111}

WRITE $B16 I {На выходе> 1111111111111111}

WRITE $B8 I {На выходу> 11111111}

WRITE $D7 I {На выходе> 65535}

WRITE $D5 I {На выходе> 65535}

WRITE $D1 I {На выходе> 5}

WRITE $H6 I {На выходе> 00FFFF}

WRITE $H4 I {На выходе> FFFF}

WRITE $H2 I {На выходе> FF}

Оператор WRITELN отличается от оператора WRITE тем, что он добавляет к выводимой информации символ перевода на новую строку.

Оператор – ввод: read

оператор предназначен для ввода значений любых переменных с терминала. Значения могут вводится в виде констант в любой СС. Вводимые значения автоматически преобразуются к требуемому размеру.

Например:

READ "A=",A; READ "RK.KOP=",RK.KOP,"RA.LSB=",RA[0..7];

READ "M[I]=",M[I];

Замечание:

при вводе числа в десятичной СС допускается указание знака числа. После ввода, число будет автоматически преобразовано в дополнительный код.

Оператор - конец программы: END

Оператор служит для завершения выполнения программы. Имеет следующий формат:

END;

В общем случае этот оператор не обязателен (выполнение программы автоматически завершится после выполнения последнего оператора в тексте), но, тем не менее, желательно в любом случае использовать оператор END.

13. Переменные-флаги.

Система представляет в распоряжение пользователя три предопределенные переменные-флага:

ZF - флаг ноля;

NF - флаг отрицательного значения;

CF - флаг переноса.

Можно сказать, что эти переменные описаны неявным образом как REG ZF[1],NF[1],CF[1]. Операции языка MCL могут изменить значение каждого из флагов. Рассмотрим назначение каждого флага более подробно.

Флаг ноля: ZF.

Если результат операции равен нолю, то этот флаг устанавливается в 1, в противном случае - 0. Все без исключения операции изменяют значение этого флага.

Флаг отрицательного значения: NF.

Если старший (знаковый) бит результата операции равен единице, то этот флаг устанавливается в 1, в противном случае - в 0. При определении значения этого флага учитывается длина операндов выполняемой операции. Все без исключения операции изменяют значение этого флага.

Флаг переноса: CF.

Этот флаг устанавливается в 1, если при выполнении операции сложения или вычитания возникает перенос из старшего разряда результата. В противном случае этот флаг устанавливается в 0. При определении значения этого флага учитывается длина операндов выполняемой операции. Логические операции (<, >, =, <>, >=, <=, AND, OR, XOR, NOT) безусловно устанавливают этот флаг в 0. Операции сдвига помещают в этот флаг значение последнего "выдвигаемого" разряда.

Замечание:

следует четко понимать, что значение флагов изменяют именно операции, а оператор присваивания никакого влияния на флаги не оказывает. Т.e при выполнении оператора RA:=RB; значения флагов изменены не будут (поскольку не выполнялась ни одна операция), а при выполнении оператора M[I+1]:=0; значения флагов могут быть изменены, так как при вычислении индекса выполняется операция +.