Команды out (z80) и sta (6502)

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
Встал на лапы
Сообщения: 80
Зарегистрирован: Вс фев 21, 2021 13:01:40
Откуда: Прокопьевск

Сообщение Михаил_avr »

Здравствуйте, я никак не могу разобраться с этими командами, они устанавливают адресную шину в определённое значение и записывают по нему, но как они узнают по какому адресу им надо вернуться. Сначала я думал что они пишут в стек, но оказалось нет.
Реклама
Собутыльник Кота
Сообщения: 2804
Зарегистрирован: Вс фев 02, 2020 09:12:37

Сообщение 1en2 »

программа тупо шагает по счётчику команд, а не по состояниям шин (поэтому "возвращаться" ей никуда не надо)... если нет команды перехода, которая изменит значение счётчика команд....
Реклама
Мучитель микросхем
Сообщения: 425
Зарегистрирован: Сб фев 01, 2020 16:04:03

Сообщение lumped.net »

Про 6502 ничего не знаю, зато могу написать про Z80. Команда OUT нужна для управления внешними устройствами. Она записывает значение из регистра в порт. Порты – это как память, но находятся в отдельном адресном пространстве. То есть по одному адресу можно попасть в два разных места. Когда процессор хочет обратиться к памяти, то он выставляет управляющий сигнал /MREQ (memory request), а когда к порту – сигнал /IORQ (input/output request). Таким образом внешняя логика узнает, что ей нужно подключить к шине данных – память или внешнее устройство.
У Z80 два вида команды OUT. Одна позволяет обратиться к любому порту по 16-разрядному адресу в регистровой паре BC. Вторая унаследована от процессора 8080 и обращается к порту по младшим 8 разрядам, при этом на старший байт адресной шины выставляется содержимое аккумулятора. В 8080 было всего 256 портов, поэтому там эта команда просто выставляла на адресную шину два одинаковых адресных байта. Этим активно пользовались для обращения к периферии в некоторых компах (РК86), где внешняя логика не различала пространство памяти и портов между собой.
Зато в 8080 можно было дешифровать статусный байт во время сигнала SYNC и узнать, что процессор хочет обратиться к стеку. Теоретически так можно было сделать отдельные изолированные 64 кБ памяти для стека. Применялось ли это где-то на практике – не знаю.
Друг Кота
Аватара пользователя
Сообщения: 15671
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Команды ввода-вывода выставляют свой адрес только на момент обращения к адресуемому устройству.
Т.е. сначала на шине адрес команды, МП ее считывает
затем выставляет соответствующий адрес устройства и производит обращение к устройству
а далее снова следует обращение к следующей команде согласно содержимого счетчика команд.
Никаких "сохранений".
8)
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «Теория»