Регистры общего назначения – сумматор, регистр данных, адресный регистр и т.д. Арифметико- логическое устройство Устройство управления A0 Центральный процессор ………………….. 35 ………………….. E7 ………………… XY A0A0 A1 FF Счетчик команд Регистр команд Ячейки памяти ОЗУ 0 1 … F Шина Машинные команды. Выполнение программы.
Наша вымышленная машина имеет 16 (16-разрядных) регистров общего назначения, (16-разрядный) регистр команд и (8-разрядный) регистр счетчика команд. Размер памяти – 256 байт. Формат машинной команды (наш RISC процессор): Код Операции О п е р а н д Размер машинной команды – одно слово (2 байта). Старшие 4 бита выделены для кода операции, остальные биты представляют операнд. Кодировка операнда зависит от типа операции.
Система команд: Команды передачи данных: Память -> Регистр - загрузить (load, ld) (2) Регистр -> Память - сохранить (store, st) (3) Команды ввода-вывода (in, out) (0,1) Арифметико-логические команды: сложение, вычитание, умножение и деление (add, sub, mul, div) (4, 5, 6, 7) логические операции (and, or, not и xor) (8, 9, A, B) операции сдвига и циклического сдвига (sl, sr, slc, src) Команды управления: команды безуловного и условного перехода (je, jg и т.д.) (C,D)
Регистр A Логический сдвиг вправо Циклический сдвиг вправо Логический сдвиг влево Циклический сдвиг влево Арифметический сдвиг вправо Арифметический сдвиг влево
Пример 1: Код операции 3 означает сохранение содержимого регистра, в данном случае регистра 5, в ячейке памяти с адресом E7. Используя мнемокод эту команду можно записать – ST 5, 231 При выполнении программы устройство управления непрерывно повторяет машинный цикл: а) в командный регистр загружается команда, хранящаяся по адресу, указанному в счетчике команд, и в счетчик команд загружается адрес следующей команды; б) расшифровывает команду; в) активирует схему для выполнения необходимой операции. Код Операции Операнд E 7
1. LD 1, LD 2, JE 2, DIV 1, 2, ST 4, STOP 1.Загрузить содержимое ячейки 120 (0х78) в первый регистр. 2.Загрузить содержимое ячейки 122 (0х7А) во второй регистр. 3.Если содержимое второго регистра равно нулю, то добавить к счетчику команд 6. 4.Разделить содержимое первого регистра на содержимое второго регистра и результат занести в четвертый регистр. 5.Сохранить содержимое четвертого регистра в ячейке с адресом 120 (0х78) 6.Остановка Пример 2:
B82301 Загрузить значение 0х123 в АХ Добавить значение 0х25 к АХ 8BD8 Переслать содержимое АХ в ВХ 03D8 Прибавить содержимое АХ к ВХ 8BCB Переслать содержимое ВХ в СХ 2BC8 Вычесть содержимое АХ из АХ 90 Нет операции CB Возврат Процессоры 80x86 являются CISC – процессорами. Код операции имеет разную длину. Одной операции может соответствовать несколько кодов в зависимости от контекста. Сегментированная память (сегментные регистры). Регистры флагов – флаг переполнения, флаг переноса, флаг нуля и т.д.
Ввод команд в память компьютера
Отображение участка памяти, содержащего код программы:
Пошаговое выполнение программы: