Как на самом деле работает программный счетчик в 8085?

Я читал о счетчике программ 8085. Этот материал здесь утверждает, что функция счетчика программ состоит в том, чтобы указывать на адрес памяти, из которого должен быть извлечен следующий байт. Когда извлекается байт (машинный код), программный счетчик увеличивается на единицу, чтобы указать на следующую ячейку памяти. Мой вопрос в том, как он справляется с условием, если размер инструкции меняется. Предположим, что текущая инструкция имеет размер 3 байта, тогда ПК должен указывать на текущий адрес +3. Как ПК узнает размер текущей инструкции? Я новичок в 8085, буду признателен за любую помощь. Спасибо


person Ravi    schedule 06.11.2015    source источник
comment
Вы уверены, что в нем нет только инструкций одинакового размера, как в RISC-архитектуре? Редактировать: неважно, у него есть 3 категории инструкций в зависимости от размера.   -  person Aaron    schedule 06.11.2015
comment
@Aaron: нет, 8080 (и последователи) - типичные машины CICS. К OP: необходимо проверить/декодировать первый байт, чтобы определить количество дополнительных байтов, которые необходимо прочитать. На практике (скажем, 386 и т. д.) новые cics-машины фактически считывают поток инструкций большими порциями (скажем, 4 байта) и впоследствии декодируют его.   -  person joop    schedule 06.11.2015
comment
@joop Как происходит определение дополнительных байтов, это был в первую очередь мой вопрос.   -  person Ravi    schedule 06.11.2015
comment
Это часть расшифровки инструкций. Часто режим адресации кодируется отдельным набором битов в первом байте команды; вы можете видеть байтовые инструкции 1-vs-2-vs-3-etc в виде полос или полос на карте инструкций 16 * 16.   -  person joop    schedule 06.11.2015


Ответы (1)


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

Как правило, ЦП увеличивает счетчик команд, чтобы он указывал на следующую инструкцию.

Точнее, во время фазы декодирования инструкции ЦП будет считывать столько байтов, сколько необходимо для инструкции, и соответственно увеличивать ПК.

person 500 - Internal Server Error    schedule 06.11.2015
comment
Но 8085 имеет размер инструкции 1-3 байта. Как ПК узнает, какой адрес указывать в зависимости от инструкции? - person Ravi; 06.11.2015
comment
ПК не знает, но ЦП знает - см. мой обновленный ответ. - person 500 - Internal Server Error; 06.11.2015
comment
ЦП имеет встроенные таблицы (или эквивалентные), которые сообщают ему, когда он видит первый байт инструкции, нужен ли другой байт для его кодирования и так далее. - person 500 - Internal Server Error; 06.11.2015
comment
Спасибо! Теперь понял. ЦП выполняет вычисления и соответственно сообщает ПК и ПК о приращениях. - person Ravi; 06.11.2015