PDA

Просмотр полной версии : Вопрос по поводу принципа работы процессора



Temych640
07.07.2020, 15:49
Здравствуйте. Я стал изучать микропроцессоры, их строение и связь с другими устройствами - контроллерами ввода-вывода, ОЗУ и т.д.
Я прочитал первую часть книги Р. Холленда "Микропроцессоры и операционные системы". Из всего, что там написано про устройство процессора, я не понимаю только одно - вот смотрите:
При запуске процессора, из программного счетчика адрес передается в ПЗУ или ОЗУ;
Из ячейки памяти по этому адресу команда поступает в устройство управления, которое инициирует действия для ее выполнения.

Так вот, если команда будет например LDA addr - т.е. загрузка регистра А из памяти, для выполнения этой команды необходимо этот адрес передать в память. Но как это сделать? Ведь если на шину адреса подается слово только из программного счетчика, и если задать ему значение, равное адресу, который указан в команде, счетчик продолжит счет уже с него, и команды в памяти, начиная от адреса команды LDA до адреса, который в ней указан, не выполнятся.
Заранее спасибо, поправьте меня, если я что-то не так понял.

goodboy
07.07.2020, 18:31
не знаю про какой проц ты читал, но ПрограммныйСчётчик (PC) он как отдельный регистр

krotan
07.07.2020, 18:43
Ведь если на шину адреса подается слово только из программного счетчика, и если задать ему значение, равное адресу, который указан в команде, счетчик продолжит счет уже с него... 1. по указателю в PC считывается команда LDA и анализируется, PC увеличивается на1
2. анализатор команд определяет, что следующие 2 байта это адрес, с которых байт считывается в регистр A счётчик PC увеличивается на 2
3. команда выполнена, следующий байт будет интерпретироватьсч как новая команда, счётчик PC за время выполнения команды увеличился на 3...

Temych640
07.07.2020, 19:11
Это все понятно, а какое устройство шлет адрес в память для чтения из нее байта?


анализатор команд определяет, что следующие 2 байта это адрес
А дальше что с этим адресом делается?

ivagor
07.07.2020, 20:10
Тут лучше конкретизировать, например для 8080 по циклам
1. M1: Выборка кода команды LDA, на ША выдается адрес PC; PC=PC+1
2. M2: Чтение младшего байта адреса adr в регистр Z, на ША выдается адрес PC; PC=PC+1
3. M3: Чтение старшего байта адреса adr в регистр W, на ША выдается адрес PC; PC=PC+1
4. M4: Чтение байта по адресу adr в регистр A, на ША выдается адрес WZ=adr
5. M1: Выборка кода следующей команды, на ША выдается адрес PC; PC=PC+1