En el microprocesador 8085 hay 64 kb de memoria disponible de los cuales algunos están asignados a ROM mientras que otros están asignados a RAM. Mi pregunta es, ¿por qué la ROM siempre se asigna a una región inferior del mapa de memoria en el microprocesador 8085?
El 8085 requiere que la ROM tenga la dirección de memoria más baja porque, después de un reinicio, intenta obtener una instrucción de la ubicación 0. Si hubiera RAM en esa dirección, el procesador obtendría datos aleatorios y no iniciaría el programa.
Cuando el 8085 se inicia, comenzará a buscar instrucciones desde la dirección cero. Por lo tanto, es necesario que la memoria que se encuentra allí contenga contenidos definidos. Sin embargo, eso no implica que la dirección cero deba asignarse permanentemente a la ROM. Se podría construir un sistema con, por ejemplo, 2K de ROM, 64K de RAM y una unidad de disquete, y usar un bit de E/S para controlar si las lecturas de la memoria provienen de la ROM o de la RAM. En el inicio, haga que todas las lecturas provengan de la ROM (las escrituras van a la RAM independientemente del bit de control) y haga que el programa de la ROM se copie a sí mismo en la RAM. Luego habilite las lecturas desde la RAM y cargue el software desde el disquete. Dado que la parte inferior del espacio de direcciones sería RAM, el software cargado desde un disquete podría configurar vectores de interrupción para sus propios fines, algo que no sería posible si la ROM todavía estuviera asignada allí.
Sé que esto es viejo, pero aquí, de memoria. Según recuerdo, el 8080 y el 8085 generalmente tenían un circuito de hardware que los diseñadores usaban y que estaba compuesto por una sola puerta que reasignaba la memoria después de tres señales de reloj, lo suficiente para ejecutar una instrucción JMP. Entonces, las primeras ubicaciones de memoria en 0: 0 procedían de una EPROM, y la puerta intercambiaría la EPROM con RAM en el cuarto ciclo de reloj en 0: 0. Eso es de mi memoria hace 30 años. Buscaría circuitos de hardware de inicio para computadoras caseras 8085; supongo que está allí.
La ROM siempre se asigna en la región inferior del mapa de memoria en el microprocesador 8085 porque después de reiniciar intenta obtener una instrucción de la ubicación o. Si hubiera RAM en ese momento, la dirección, el procesador buscaría datos aleatorios y no iniciaría el programa. Entonces, la ROM no se movió a otra región.
david tweed
LDIR
es una instrucción Z80 y no existe en el 8085.Super gato
MOV A,M / MOV M,A / INC L / JNZ / DEC H / JP
o mejor usar un ciclo dePOP / PUSH / POP
instrucciones (no sé acerca de los tiempos 8085, pero en el Z80, la secuencia anterior sería de 10 bytes y toma alrededor de 28 ciclos/byte copiado, o 13 bytes y 23/byte si se desenrolla 2x; este último tomaría 11 bytes y tomaría alrededor de 22 ciclos/byte copiado si no se desenrolla, o 14 bytes y 18,5 ciclos/byte si se desenrolla 2x)Super gato
david tweed
david tweed
Super gato
MOV B,B
estableceríaMOV C,C
la base del área reubicable superior o inferior en la última palabra obtenida, desplazada por dos;MOV A,A
establecería la base reubicable a su valor predeterminado. Por lo tanto, si uno quisiera acceder al byte 4 de un objeto...Super gato
mov A,A / lda 80A0h / mov B,B / lda 8004h
. Por lo tanto, hacer que el acceso a objetos en un espacio de direcciones de 256 K sea más rápido de lo que normalmente sería el acceso incluso en un espacio de direcciones de 64 K. Hice trucos algo similares (aunque más simples) en un cartucho de juego Atari 2600 (que obtiene 13 cables de dirección, 8 cables de datos, alimentación, tierra y NADA MÁS de la CPU), por lo que pude trazar un píxel HIRES en la coordenada X ,Y de un mapa de bits adecuadamente organizado a través deLDA $7F00,X / ORA $7E00,Y / STA $7E00,Y
.