Команды управления потоком команд

Команды управления системой

Команды преобразования

Команды для работы со строками

Для работы со строками в архитектуре структуры команд обычно предусматриваются команды, обеспечивающие перемещение, сравнение и поиск строк. В большинстве машин перечисленные операции просто имитируются за счет других команд.

Команды преобразования осуществляют изменение формата представления данных. Примером может служить преобразование из десятичной системы счисления в двоичную или перевод 8-разрядного кода символа из кодировки ASCII в кодировку EBCDIC, и наоборот.

2.16.11. Команды ввода/вывода

Команды этой группы могут быть подразделены на команды управления периферийным устройством (ПУ), проверки его состояния, ввода и вывода.

Команды управления периферийным устройством служат для запуска периферийного устройства и указания ему требуемого действия. Например, накопителю на магнитной ленте может быть предписано на необходимость перемотки ленты или ее продвижения вперед на одну запись. Трактовка подобных инструкций зависит от типа периферийного устройства.

Команды проверки состояния ввода/вывода применяются для тестирования различных признаков, характеризующих состояние модуля ввода/вывода и подключенных к нему периферийных устройств. Благодаря этим командам центральный процессор может выяснить, включено ли питание периферийного устройства, завершена ли предыдущая операция ввода/вывода, возникли ли в процессе ввода/вывода какие-либо ошибки и т.п.

Собственно обмен информацией с периферийным устройством обеспечивают команды ввода и вывода. Команды ввода предписывают модулю ввода/вывода получить элемент данных (байт или слово) от периферийного устройства и поместить его на шину данных, а команды вывода – заставляют модуль ввода/вывода принять элемент данных с шины данных и переслать его на периферийное устройство.

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

Концепция фон-неймановской вычислительной машины предполагает, что команды программы, как правило, выполняются в порядке их расположения в памяти. Для получения адреса очередной команды достаточно увеличить содержимое счетчика команд на длину текущей команды. В то же время основные преимущества вычислительной машины заключаются именно в возможности изменения хода вычислений в зависимости от возникающих в процессе счета результатов. С этой целью в архитектуру структуры команд вычислительной машины включаются команды, позволяющие нарушить естественный порядок следования и передать управление в иную точку программы. В адресной части таких команд содержится адрес точки перехода (адрес той команды, которая должна быть выполнена следующей). Переход реализуется путем загрузки адреса точки перехода в счетчик команд (вместо увеличения содержимого этого счетчика длину команды).

В системе команд вычислительной машины можно выделить три типа команд, способных изменить последовательность вычислений:

• безусловные переходы;

• условные переходы (ветвления);

• вызовы процедур и возвраты из процедур.

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

Несмотря на то, что присутствие в программе большого числа команд безусловного перехода считается признаком плохого стиля программирования, такие команды обязательно входят в архитектуру структуры команд любой вычислительной машины. Для их обозначения в языке ассемблера обычно используется английское jump (прыжок). Команда безусловного перехода обеспечивает переход по заданному адресу без проверки каких-либо условий.

Условный переход происходит только при соблюдении определенного условия, в противном случае выполняется следующая по порядку команда программы. Большинство производителей вычислительных машин в своих ассемблерах обозначают подобные команды словом branch (ветвление).

Условием, на основании которого осуществляется переход, чаще всего выступают признаки результата предшествующей арифметической или логической операции. Каждый из признаков фиксируется в своем разряде регистра флагов процессора. Возможен и иной подход, когда решение о. переходе принимается в зависимости от состояния одного из регистров общего назначения, куда предварительно помещается результат операции сравнения. Третий вариант – это объединение операций сравнения и перехода в одной команде.

В системе команд вычислительной машины для каждого признака результата предусматривается команда ветвления (иногда – две: переход при наличии признака и переход при его отсутствии). Большая часть условных переходов связана с проверкой взаимного соотношения двух величин или с равенством (неравенством) некоторой величины нулю. Последний вид проверок используется в программах наиболее интенсивно.

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: