В микропроцессоре 8085 доступно 64 КБ памяти, часть из которых назначена ПЗУ, а часть — ОЗУ. Мой вопрос: почему ПЗУ всегда сопоставляется с более низкой областью карты памяти в микропроцессоре 8085?
Процессору 8085 требуется ПЗУ с наименьшим адресом памяти, потому что после сброса он пытается получить инструкцию из ячейки 0. Если бы по этому адресу была ОЗУ, процессор извлекал бы случайные данные и не запускал бы программу.
Когда 8085 запускается, он начинает получать инструкции с нулевого адреса. Таким образом, необходимо, чтобы находящаяся там память содержала определенное содержимое. Однако это не означает, что нулевой адрес должен постоянно отображаться в ПЗУ. Можно построить систему, например, с 2 КБ ПЗУ, 64 КБ ОЗУ и дисководом для гибких дисков, и использовать бит ввода-вывода для управления тем, откуда считывается память: из ПЗУ или из ОЗУ. При запуске все операции чтения происходят из ПЗУ (записи идут в ОЗУ независимо от управляющего бита), а программа ПЗУ копирует себя в ОЗУ. Затем включите чтение из ОЗУ и загрузите программное обеспечение с дискеты. Поскольку нижняя часть адресного пространства будет ОЗУ, программное обеспечение, загруженное с дискеты, сможет настроить векторы прерываний для своих собственных целей, что было бы невозможно, если бы ПЗУ по-прежнему отображалось там.
Я знаю, что это старо, но здесь, по памяти. Насколько я помню, 8080 и 8085 обычно имели аппаратную схему, которую использовали разработчики, которая состояла из одного вентиля, который переназначал память после трех тактовых сигналов — этого было достаточно для выполнения инструкции JMP. Таким образом, первые ячейки памяти в 0:0 были получены из СППЗУ, и гейт поменял местами СППЗУ с ОЗУ на 4-м такте в 0:0. Это из моей памяти 30-летней давности. Я бы искал аппаратные схемы запуска для домашних компьютеров 8085 - я предполагаю, что они там.
ПЗУ всегда отображается в нижней области карты памяти в микропроцессоре 8085, потому что после сброса он пытается получить инструкцию из местоположения o. Если бы в это время была оперативная память, то процессор выбирал бы случайные данные и не ставил бы программу. Так что ПЗУ не переместилось в другой регион.
Дэйв Твид
LDIR
является инструкцией Z80 и не существует на 8085.суперкот
MOV A,M / MOV M,A / INC L / JNZ / DEC H / JP
или лучше использовать циклPOP / PUSH / POP
инструкций (я не знаю о таймингах 8085, но на Z80 прежняя последовательность была бы 10 байт и занимает около 28 циклов на байт копирования или 13 байтов и 23 цикла на байт, если развернуто 2 раза; последнее займет 11 байт и займет около 22 циклов на байт, скопировано, если не развернуто, или 14 байт и 18,5 циклов на байт, если развернуто 2 раза)суперкот
Дэйв Твид
Дэйв Твид
суперкот
MOV B,B
будетMOV C,C
устанавливать верхнюю или нижнюю перемещаемую базу базы на последнее выбранное слово, сдвинутое на два;MOV A,A
установит перемещаемую базу по умолчанию. Таким образом, если кто-то хочет получить доступ к байту 4 объекта...суперкот
mov A,A / lda 80A0h / mov B,B / lda 8004h
. Таким образом, доступ к объектам в 256-килобайтном адресном пространстве будет быстрее, чем обычный доступ даже в 64-килобайтном адресном пространстве. Я проделал несколько похожие (хотя и более простые) трюки с игровым картриджем Atari 2600 (который получает 13 адресных проводов, 8 проводов данных, питание, землю и НИЧЕГО БОЛЬШЕ от ЦП), поэтому я мог построить пиксель HIRES в координате X. ,Y соответствующим образом расположенного растрового изображения черезLDA $7F00,X / ORA $7E00,Y / STA $7E00,Y
.