Определение форматов команд по заданным параметрам эвм и способам адресации операндов
Рассмотрим
этапы определения форматов команд по
заданным параметрам ЭВМ и способам
адресации операндов.
Предположим,
что имеется одноадресная ЭВМ со следующими
параметрами:
мощность
системы команд K=70 выполняемых операций;
объем
регистровой памяти Vрп
=24;
объем
оперативной памяти Vоп
=220
байт=1Мб;
разрядность
данных - 16 бит;
ОП
разбита на блоки размером Nб
=210
байт=1Кб, начальные адреса которых
задаются в регистрах.
Дополнительное
условие:
непосредственная;
прямая
регистровая;
прямая
к ОП;
косвенная
через регистр;
косвенная
через ячейку ОП;
сегментная
Признак
способа адресации кодируется вне поля
операции в отдельном поле признака
адресации.
Требуется
определить размерности адресного поля
Lадр
.
Требуемая
минимальная разрядность адресного поля
для различных способов адресации будет
разной.
Непосредственная
адресация.
Разрядность адресного поля определяется
разрядностью данных, так как они будут
записываться в это поле команды. По
исходным данным
Lадр
=16
Прямая
регистровая адресация.
Разрядность
адресного поля можно вычислить по
формуле
Lадр
log2Vрп=
log2
24
и
ближайшее приемлемое значение
Lадр
=log2
25
=log232=5
Прямая
адресация к оперативной памяти.
Разрядность
адресного поля команды должна
соответствовать объему оперативной
памяти, чтобы была возможность адресовать
любую ячейку ОП.
Lадр
log2Vоп=
log2
220
Выбираем
минимально возможное значение Lадр
=20.
Косвенная
адресация через регистр.
Этот
способ адресации предполагает, что в
адресном поле команды указывается номер
регистра, в котором хранится адрес
операнда, расположенного в ОП. Таким
образом, как и в предыдущем случае,
разрядность адресного поля должна
соответствовать количеству регистров.
(Считаем, что разрядность регистров
достаточна для адресации всех ячеек
ОП):
Lадр
log2
24,
Lадр
=5
Косвенная
через ячейку ОП.
Разрядность
адресного поля можно вычислить по
формуле
Lадр
log2Vоп=
log2
220
Выбираем
минимально возможное значение Lадр
=20.
Сегментная.
При
этом
способе адресации адрес операнда
определяется по двум составляющим:
адресу начала блока памяти, хранящемуся
в одном из регистров, и смещению операнда
относительно начала блока. Таким образом,
в команде должны быть предусмотрены
два поля для двух составляющих адреса.
(Считаем, что смещение задается в самой
команде.)
Размер
поля для указания номера регистра уже
определялся ранее: nб
=5. Размер поля для смещения nсм
вычисляется по формуле с учетом размера
блока памяти (Nбл=1Кб=210
байт)
nсмlog2Nбл=log2210
что
дает минимальную разрядность этого
поля n
=10.