4 votos

Asignación de memoria en el microprocesador 8085

En el microprocesador 8085 hay 64 kb de memoria disponible de los cuales algunos están asignados a la ROM mientras que otros están asignados a la RAM. Mi pregunta es, ¿por qué la ROM siempre está asignada a una región inferior del mapa de memoria en el microprocesador 8085?

5voto

Alex Andronov Puntos 178

Cuando el 8085 se pone en marcha, comenzará a buscar instrucciones desde la dirección cero. Por lo tanto, es necesario que la memoria que se encuentre allí tenga un contenido definido. Esto no implica, sin embargo, que la dirección cero deba ser mapeada permanentemente en la ROM. Uno podría construir un sistema con, por ejemplo, 2K de ROM, 64K de RAM y una disquetera, y usar un bit de E/S para controlar si las lecturas de memoria vienen de la ROM o de la RAM. En el arranque, haz que todas las lecturas vengan de la ROM (las escrituras van a la RAM independientemente del bit de control), y haz 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 la RAM, el software cargado desde el disquete sería capaz de establecer vectores de interrupción para sus propios propósitos - algo que no sería posible si la ROM estuviera todavía mapeada allí.

0 votos

LDIR es una instrucción del Z80, y no existe en el 8085.

0 votos

@DaveTweed: Corregido. Si la dirección de origen y la de destino pueden ser idénticas, me pregunto si sería más rápido utilizar MOV A,M / MOV M,A / INC L / JNZ / DEC H / JP o mejor utilizar un bucle de POP / PUSH / POP (no conozco los tiempos del 8085, pero en el Z80, la primera secuencia sería de 10 bytes y tardaría unos 28 ciclos/byte copiados, o 13 bytes y 23/byte si se desenrolla 2x; la segunda ocuparía 11 bytes y tardaría unos 22 ciclos/byte copiados si no se desenrolla, o 14 bytes y 18,5 ciclos/byte si se desenrolla 2x)

0 votos

@DaveTweed: Supongo que con un ligero ajuste de hardware uno podría hacer las cosas aún más rápidas teniendo la RAM habilitada para todos los accesos de memoria, pero haciendo que cuando la ROM esté habilitada, la línea R/W de la RAM sea afirmada, no es que la velocidad realmente importe para tal inicialización. Tengo curiosidad, por cierto, por saber qué cantidad de "hardware de direccionamiento creativo" incluyen las máquinas. Con un hardware de direccionamiento equivalente a un pequeño CPLD (unos cuantos latches de 8 bits, una ALU de 16 bits y unos cuantos muxes) se podría convertir un 8085 en una decente CPU orientada a objetos de 16 bits que accediera a 256K de RAM.

3voto

Peter Bennett Puntos 15949

El 8085 requiere la ROM a la dirección de memoria más baja porque, después de un reinicio, intenta obtener una instrucción desde la posición 0. Si hubiera RAM en esa dirección, el procesador obtendría datos aleatorios y no iniciaría el programa.

1voto

user192673 Puntos 1

Sé que esto es viejo, pero aquí, de memoria. Si no recuerdo mal, los 8080 y 8085 solían tener un circuito de hardware que los diseñadores utilizaban y que estaba formado por una única puerta que reasignaba la memoria después de tres señales de reloj, lo suficiente para ejecutar una instrucción JMP. Así que las primeras posiciones de memoria en 0:0 venían de una EPROM, y la puerta intercambiaba la EPROM con la RAM en el cuarto ciclo de reloj en 0:0. Eso es lo que recuerdo hace 30 años. Yo buscaría circuitos de hardware de arranque para ordenadores 8085 construidos en casa - supongo que está ahí.

0voto

Eric Brown - Cal Puntos 2771

La ROM siempre se mapea en la región inferior del mapa de memoria en el microprocesador 8085 porque después de reiniciar intenta buscar una instrucción desde la ubicación o. Si hubiera RAM en ese momento la dirección, el procesador buscaría datos al azar y no se ejecutaría el programa. Así que la ROM no se movió a otra región.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X