Данному образовательному сайту пришлось несколько раз менять свое имя. С 2011 года доступ к нему обеспечивается по URL
http://educomp.runnet.ru

emc.km.ru (2001-2007) ==> educomp.org.ru (2007-2011) ==> educomp.runnet.ru (2011-...)
Более подробно об истории сайта можно прочитать здесь.


Учебные модели компьютера



Модели (software):

"Е14" (parallel !!!)

Модели (hardware):






Награды сайта
Награды сайта

Система команд

Коды операций

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

Код операции для каждой команды размещается в первых ее четырех битах и представляется одной шестнадцатиричной цифрой. Весь перечень команд включает только двенадцать базовых команд, коды операций которых представляются шестнадцатиричными цифрами от 1 до С. Таким образом, любой код команды, который начинается с шестнадцатеричной цифры 3 (битовая комбинация 0011), относится к команде сохранения STORE, а каждая команда, код которой начинается с шестнадцатиричного символа А, является командой циклического сдвига ROTATE. В машине есть две команды сложения ADD: одна - для сложения чисел в двоичном дополнительном коде, а другая - для сложения чисел в формате с плавающей точкой. Такое разделение обусловленно тем, что сложение чисел в двоичном дополнительном коде потребует от арифметико-логического блока выполнения совершенно иных действий, чем в случае сложения чисел в формате с плавающей точкой.

Операнды

А теперь рассмотрим формат поля операндов. Это поле состоит из трех шестнадцатеричных цифр (12 бит) и во всех случаях (кроме команды остановки HALT, для которой не требуется никаких уточнений) содержит дополнительные сведения о команде, заданной кодом операции. Например, если первая шестнадцатеричная цифра команды равна 1 (код операции считывания ячейки памяти LOAD), то следующая шестнадцатеричная цифра указывает общий регистр, в который требуется загрузить считанное из основной памяти значение, а последние две шестнадцатеричные цифры задают адрес ячейки памяти, из которой требуется считать данные. Например, команда 1347 (шестнадцатеричное число) воспринимается машиной как "Загрузить в регистр 3 содержимое ячейки памяти с адресом 47". Если код операции представлен шестнадцатеричной цифрой 7 (операция OR над содержимыми двух регистров общего назначения), то следующая шестнадцатеричная цифра указывает номер регистра, в который следует поместить результат операции, а две последние шестнадцатеричные цифры поля операндов задают номера тех регистров, над содержимым которых необходимо выполнить операцию OR. В результате команда 70С5 понимается как инструкция "Выполнить операцию OR с содержимым регистров С и 5, а результат поместить в регистр 0". В нашей машине небольшое отличие существует и между двумя командами загрузки LOAD. Возможно, вы уже заметили, что код операции 1 (шестнадцатеричный) относится к команде загрузки регистра общего назначения содержимым ячейки основной памяти, тогда как код операции 2 (шестнадцатеричный) - к команде загрузки регистра общего назначения указанным числовым значением. Различие заключается в том, что поле операндов в команде первого типа содержит адрес, тогда как в команде второго типа поле операндов содержит ту битовую коминацию, которую требуется загрузить в регистр. Интересное решение принято в отношении команды перехода JUMP (код операции - шестнадцатнричная цифра В). Первая шестнадцатеричная цифра поля операндов указывает, какой регистр общего назначения следует сравнить с регистром 0. Если указанный регистр содержит ту же битовую комбинацию, что и регистр 0, то машина выполняет переход посредством выбора следующей команды по тому адресу, который указан в двух последних шестнадцатеричных цифрах поля операндов. В противном случае программа продолжает нормальную последовательность выполнения команд. По сути, это пример команды условного перехода. Однако, если первая шестнадцатеричная цифра поля операндов будет равна 0, то данная команда запрашивает сравнить регистр 0 с регистром 0. Так как содержимое любого регистра всегда равно самому себе, то в этом случае переход всегда выполняется. Следовательно, команда, код которой начинается с шестнадцатеричных цифр В0, воспринимается как команда безусловного перехода.

НА ГЛАВНУЮ


Автор сайта - Евгений Александрович Еремин (Пермский государственный педагогический университет). e_eremin@yahoo.com