Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Requerimiento:
Tareas:
Página 1 de 1
FA-1.1
Memoria
Es útil elaborar una tabla de direccionamiento para encontrar el mapa y los espacios libres.
Se observa que la memoria RAM de 2KB sólo puede implementarse mediante dos
bancos de 1 KB debido a la descodificación parcial. Para las direcciones establecidas al
considerar A13:10 con los valores 1111 se obtiene los rangos de la tabla. Con ello se
obtiene el mapa de direccionamiento de memoria.
La tabla ayuda también a encontrar un espacio para la expansión de RAM, como se ve.
E/S
Para el caso de direccionamiento E/S se elabora, igualmente, una tabla de direccionamiento que ayuda al análisis
y permite obtener los mapas.
Al igual que en el caso de la memoria, se observa que existen 7 alias por cada dirección de puerto establecida.
En este caso, esos alias no son direcciones consecutivas, lo que permite incorporar los puertos de expansión para
los visores.
FA-1.2
Memoria
Al observar la tabla de direccionamiento y el mapa de memoria, se establece que, al no contar con cuatro bits
de direcciones, el espacio se reduce a 64KB16 = 4KB. De la configuración inicial, 0,5KB de ROM y 2 KB de RAM,
se tiene un total de 2,5KB ya ocupados, por lo que se deriva 4KB-2,5KB = 1,5KB de espacio libre para expansión.
Debido a la descodificación parcial, ta ié e iste 1 espa ios alias li es, po lo ue sólo es posi le olo a
la expansión de 1KB en una posición.
El espacio de 0,5KB se ubica (con A13:10 = 0000) entre 0200 y 03FFF, por supuesto, con sus alias.
El espacio de 1KB va contiguo a la RAM1, desde 7C00 hasta 7FFF y también cuenta con 15 alias. Se elige este
rango de direcciones.
E/S
Para el caso de los puertos, se observa que existen 32 direcciones válidas; al ser utilizadas 7 direcciones para
puertos de salida se cuenta con 32-7 = 25 direcciones libres. Sólo se usa un puerto de entrada por lo que se tiene
31 direcciones disponibles para puertos de entrada.
Para los dos visores adicionales, VISOR6 y VISOR7 se elige las direcciones contiguas al grupo de visores ya
instalados, es decir, VISOR6 F9 y VISOR7 F8.
Para el teclado adicional se elige la siguiente dirección contigua a los visores adicionales con el fin de minimizar
el uso de inversores en el descodificador, es decir, FILA y COLA usan la dirección F7, donde FILA es el puerto de
salida de selección de las filas de la matriz del teclado y COLA es el puerto de entrada que permite leer el estado
de las columnas.
FA-1.3
1. Esquema de solución.
El diagrama se explica solo. Se especifica la necesidad de dos puertos, uno E y otro S, para el teclado.
2. Mapas de direccionamiento.
3. Tablas de direccionamiento.
_ 𝒂 = + ∙ ̅̅̅̅̅̅
̅/ ∙𝒂 ̅̅̅̅̅ ∙ 𝒂
_ 𝒊 𝒂= ̅̅̅ ∙ 𝒂 ∙ 𝒂 ∙ 𝒂
∙ ̅/ ∙𝒂 ∙𝒂
_ 𝒂= ∙ ̅/ ∙𝒂 ∙𝒂
̅̅̅ ∙ 𝒂 ∙ 𝒂 ∙ 𝒂
_ 𝒊 = ̅̅̅ ∙ 𝒂
∙ ̅/ ∙𝒂 ∙𝒂 ∙𝒂 ̅̅̅ ∙ 𝒂
̅̅̅
_ 𝒊 = ∙ ̅/ ∙𝒂 ∙𝒂 ∙𝒂
̅̅̅ ∙ 𝒂
̅̅̅ ∙ 𝒂
5. Diagrama de bloques de montaje.
FA-2 Suma de 100 bytes no signados sin desborde.
1. Esquema de solución.
3. Flujograma.
2. Algoritmo.
A. Variables y datos
B. Procedimiento
1. iniciar variables
puntero a datos
4. Modelos de programación.
borrar suma
6800 – ET-3400
contador de bytes datos 100 bytes en RAM, dir inicio: 0
suma 2 bytes en RAM, ci: 0
2. acumular byte contador B, ci: CANT
leer suma puntero IX, ci: datos
sumar byte borrador A
acarreo C, bandera
actualizar
¿acarreo?
Z80 – KENTAC-z800
sí, incrementar MSB suma datos 100 bytes en RAM, dir inicio: 8000H
suma 2 bytes en RAM, ci: 0
3. ¿último? contador B, ci: CANT
no, volver a 2. puntero IX, ci: datos
borrador A
acarreo C, bandera
4. salir MSB auxiliar C, registro, ci: 0
5. Programas en código fuente.
.org 0
CANT .equ 100 ; cantidad de bytes
.dseg
datos .rb CANT ; 100 datos
suma .rb 2 ; resultado
.cseg
; iniciar variables
ldx #datos ; puntero a datos
clr suma ; borrar suma
clr suma+1
ldab #CANT ; contador de bytes
; acumular byte
sgte: ldaa suma ; leer suma
adda 0,ix ; sumar byte
staa suma ; actualizar suma
bcc cuenta ; ¿acarreo?
inc suma+1 ; sí, generar MSB suma
; ¿último?
cuenta: inx ; apuntar a siguiente dato
decb ; contabilizar
bne sgte ; no, siguiente dato
wai
.fin
.org 8000H
CANT .equ 100 ; cantidad de bytes
.dseg
datos .rb CANT ; 100 datos
suma .rb 2 ; resultado
.cseg
; iniciar variables
ld ix,datos ; puntero a datos
xor a ; borrar suma
ld (ix+CANT),a ; LSB
ld c,a ; MSB
lda b,CANT ; contador de bytes
; acumular byte
sgte: ld a,suma ; leer suma
add a,(ix) ; sumar byte
ld suma,a ; actualizar suma
jp nc,cuenta ; ¿acarreo?
inc c ; sí, generar MSB suma
; ¿último?
cuenta: inc ix ; apuntar a siguiente dato
dec b ; contabilizar
jp nz,sgte ; no, siguiente dato
ld (ix),c ; actualizar MSB
halt
.fin