|
Вначале рассмотрим четырехадресные команды. Код операции (КОП) определяет то действие (операцию), которую должна выполнить команда. Адрес1 и адрес2 определяют адреса ячеек памяти, из которых берутся исходные данные (операнды). Адрес3 определяет ячейку памяти, куда помещается результат. Адрес4 определяет ячейку памяти, откуда выбирается следующая команда.
![]() |
Рис. 4
На рис. 4 показано, что устройство управления можно разделить на устройство определения кода операции (дешифрирующее устройство) и исполнительное устройство. Также показаны следующие регистры, входящие в состав процессора:
· регистр команд, в который загружается команда, подлежащая выполнению;
· два регистра данных, в которые загружаются исходные данные (операнды);
· регистр результата, в котором сохраняется результат операции;
· регистр состояния, в котором сохраняется определенная информация о выполненной операции (например, равенство результата нулю, отрицательность результата, наличие арифметического переполнения и т.п.).
Рассмотрим процесс выполнения четырехадресной команды по шагам.
Считаем, что подлежащая выполнению команда находится в регистре команд:
1. команда поступает на дешифрирующее устройство, где определяется ее код операции и адреса, где находятся данные;
2. исполнительное устройство считывает первый операнд из ячейки памяти с адресом Адрес1 в регистр1 данных;
3. исполнительное устройство считывает второй операнд из ячейки памяти с адресом Адрес2 в регистр2 данных;
4. арифметико-логическое устройство выполняет необходимую операцию (в зависимости от кода операции), результат сохраняется в регистре результата и регистре состояния
5. Содержимое регистра результата пересылается в ячейку с адресом Адрес3
6. Команда из ячейки с адресом Адрес4 считывается в регистр команд.
В случае трехадресных команд отсутствует Адрес4, то есть адрес следующей команды. Поэтому вводится дополнительный регистр, называемый указатель команды, в которой содержится адрес следующей команды (рис. 5)
![]() |
Рис. 5
В процессе выполнения меняется только шаг 6, на котором в регистр команд считывается команда из ячейки памяти, адрес которой содержится в указателе команд и добавляется шаг 7, на котором значения указателя команд увеличением на единицу. Таким образом, следующая команда будет считана из соседней ячейки с большим адресом. Получается, что команды выполняются последовательно, одна за одной, как они записаны в памяти. Поскольку бывает необходимым нарушить этот порядок выполнения (например, для того, чтобы организовать многократное выполнение группы одних и тех же команд – так называемый цикл), вводятся специальные команды перехода, которые позволяют нарушить этот порядок выполнения команд «одна за одной». Действие этих команд заключается в том, что они загружают в указатель команд некоторое число и тем самым обеспечивают переход к выполнению команды, расположенной в ячейке с адресом, равным этому числу. Команды перехода бывают безусловные (выполняются всегда) и условные (выполняются или нет в зависимости от содержимого регистра состояния).
Двухадресные, одноадресные и безадресные команды, как правило, используются вместе. Двухадресные команды содержат только либо адреса операндов (при этом результат должен сохраняться в памяти отдельной командой), либо адрес одного из операндов и результата (второй операнд должен быть заранее загружен в регистр данных). Одноадресная команда либо загружает один операнд, либо сохраняет результат. Безадресные команды работают с данными, заранее загруженными в регистры. Таким образом, полное выполнение операции, с загрузкой исходных данных и сохранением результата требует более чем одной команды. Однако сами команды выполняются быстрее, а также упрощается устройство управления. Поэтому современные ЭВМ используют двухадресные, одноадресные и безадресные команды.
В целом, команды ЭВМ можно разделить на следующие группы:
· арифметические;
· логические;
· сравнения;
· загрузки и сохранения данных;
· перехода.
Рассмотренный способ получения данных из памяти ЭВМ получил название прямой адресации. Имеется также косвенная и непосредственная адресации. При косвенной адресации адрес в команде указывает не на ячейку памяти, где хранится операнд, а на ячейку, где находится адрес операнда. То есть после чтения числа из ячейки памяти, это число трактуется как адрес операнда и возникает необходимость еще один раз обратиться к памяти, теперь уже за самим операндом. Кроме того, возникает необходимость еще в одном регистре – адресном, в который считывается адрес операнда. На рис. 6 это показано для одноадресной команды загрузки в регистр 1 данных.
![]() |
Рис. 6
Команда выполняется следующим образом:
1. команда поступает на дешифрирующее устройство, где определяется ее код операции и необходимость косвенной адресации;
2. исполнительное устройство считывает адрес операнда из ячейки памяти с адресом Адрес1 в адресный регистр;
3. исполнительное устройство считывает операнд из ячейки памяти с адресом, соответствующим содержимому адресного регистра в регистр1 данных;
4. команда из ячейки с адресом, соответствующим содержимому указателю команд, считывается в регистр команд;
5. Содержимое указателя команд увеличивается на единицу.
При непосредственной адресации вместо адреса в команде содержится сам операнд. На рис. 7 это показано для команды загрузки в регистр 1 данных.
![]() |
Рис. 7
Команда выполняется следующим образом:
1. команда поступает на дешифрирующее устройство, где определяется ее код операции и необходимость непосредственной адресации;
2. исполнительное устройство считывает операнд из регистра команд в регистр1 данных;
3. команда из ячейки с адресом, соответствующим содержимому указателю команд, считывается в регистр команд;
4. Содержимое указателя команд увеличивается на единицу.
Дата добавления: 2015-08-28; просмотров: 50 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
Список студентов, включенных в приказ на получение материальной помощи (компенсация проживания в общежитии) в ноябре | | | Выражение согласия. |