Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Turno: B
Título de la Práctica:
Número de Práctica: 2
Apellidos y Nombres:
DESARROLLO 3
8086/88 Device Specifications 3
8086/88 Pinout 4
8086/88 Pinout 5
8086/88 Pinout 5
8086/88 Pinout 6
8086/88 Pinout 7
8284A Clock Generator 8
8284A Clock Generator 8
8284A Clock Generator 9
8284A Clock Generator 10
Búfer y enclavamiento de BUS 10
BUS Buffering and Latching 11
Sincronización del BUS 11
Sincronización del BUS. 12
Sincronización del BUS 12
BUS Timing 13
Sincronización del BUS 14
Sincronización del BUS 15
Modo MIN y MAX 16
8288 Bus Controller 16
Modo MAX 8086 Sistema 17
Conclusiones 24
2
DESARROLLO
3
● 80C86/80C88: CMOS version draws 10mA with temp spec -40 to
225degF. La versión CMOS consume 10 mA con especificaciones de
temperatura de -40 a 225 ° F.
● versión CMOS
● Input/Output current levels:
8086/88 Pinout
● Pin functions:
● AD15-AD0
○ Dirección multiplexada (ALE = 1) / bus de
datos (ALE = 0).
● A19/S6-A16/S3 (multiplexed)
○ 4 bits de orden superior de la dirección de 20
bits O bits de estado S6-S3.
● M/IO
○ Indica si la dirección es una dirección de
memoria o E/S.
● RD
○ Cuando es 0, el bus de datos es impulsado por
la memoria o un dispositivo de E / S.
● WR
○ El microprocesador conduce el bus de datos a
la memoria o un dispositivo de E / S. Cuando
es 0, el bus de datos contiene datos válidos.
● ALE (Address latch enable)
4
○ Cuando es 1, el bus de datos de dirección
contiene una dirección de memoria o de E / S.
● DT/R (Data Transmit/Receive)
○ El bus de datos transmite/recibe datos.
● DEN (Data bus Enable)
○ Activa los búferes de bus de datos externos.
8086/88 Pinout
● Pin functions:
● S7, S6, S5, S4, S3, S2, S1, S0
○ S7: Logic 1, S6: Logic 0. S7: 1 lógico. S6:
0logico
○ S5: Indicates condition of IF flag bits.
Condición de los bits de bandera IF.
○ S4-S3: Indique a qué segmento se accede
durante el ciclo de bus actual:
8086/88 Pinout
● Funciones de los Pines:
● INTR
5
○ Cuando 1 e IF = 1, el microprocesador se
prepara para interrumpir el servicio. INTA se
activa después de que se completa la
instrucción actual.
● INTA
○ Interrupt Acknowledge Reconocimiento de
interrupción generado por el microprocesador
en respuesta a INTR. Hace que el vector de
interrupción se coloque en el bus de datos.
● NMI
○ (Non-maskable interrupt). Interrupción no
enmascarable. Similar a INTR, excepto que el
bit indicador IF no se consulta y la
interrupción es el vector 2.
● CLK
○ La entrada de reloj debe tener un ciclo de
trabajo del 33% (alto para 1/3 y bajo para 2/3
s)
● VCC/GND
○ Fuente de alimentación (5V) y GND (0V).
8086/88 Pinout
● Funciones de los Pines:
● MN/ MX
○ Select minimum (5V) or maximum mode (0V)
of operation.
● BHE
○ Bus High Enable. Enables the most significant
data bus bits (D 15 -D 8 ) during a read or
write operation.
6
● READY
○ Used to insert wait states (controlled by
memory and IO for reads/writes) into the
microprocessor.
● RESET
○ Microprocessor resets if this pin is held high
for 4 clock periods.
○ Instruction execution begins at FFFF0H and
IF flag is cleared.
● TEST
○ An input that is tested by the WAIT instruction.
○ Commonly connected to the 8087 coprocessor.
8086/88 Pinout
● Pin functions:
● HOLD
○ Solicita un acceso directo a memoria (DMA).
Cuando es 1, el microprocesador se detiene y
coloca la dirección, los datos y el bus de
control en estado de alta impedancia.
● HLDA (Hold Acknowledge)
○ Indica que el microprocesador ha entrado en
estado de espera.
● RO/GT1 and RO/GT0
○ Solicitar / otorgar pines solicitud / otorgar
accesos directos a memoria (DMA) durante la
operación de modo máximo.
● LOCK
○ La salida de bloqueo se utiliza para bloquear
los periféricos del sistema. Se activa usando el
prefijo LOCK: en cualquier instrucción.
● QS1 and QS0
7
○ Los bits de estado de la cola muestran el
estado de la cola de instrucciones internas.
Proporcionado para el acceso por el
coprocesador numérico (8087).
8284A Clock Generator
● Funciones Básicas:
● Clock generation. - Generación de reloj
● RESET synchronization. - Restablecer la sincronización.
● READY synchronization. - Sincronización lista.
● Peripheral clock signal. - Señal de reloj periferico.
8
8284A Clock Generator
● Clock generation:
○ Crystal está conectado a X1 y X2.
○ XTAL OSC genera una señal de onda
cuadrada a la frecuencia del cristal que
alimenta:
● Un búfer inversor (salida OSC) que se utiliza para impulsar la
entrada EFI de otros 8284A.
● 2-to-1 MUX
○ F / C selecciona la entrada externa XTAL
o EFI.
○ El MUX maneja un contador de división por 3
(15MHz a 5MHz).
○ This drives:
● El flip-flop listo (sincronización lista).
● Un segundo contador de división por 2 (clk de 2,5 MHz para
componentes periféricos).
● Reiniciar el flipflop
● CLK que impulsa la entrada CLK del 8086.
9
8284A Clock Generator
● RESET:
○ El flipflop activado por flanco negativo aplica
la señal RESET al 8086 en el flanco
descendente.
○ El 8086 muestrea el pin RESET en el flanco
ascendente.
10
○ El pin ALE controla un conjunto de
pestillos.
● Todas las señales DEBEN tener un búfer.
○ Cierres amortiguadores para A 0 -A 15 .
○ Control y A 16 -A 19 + BHE se
almacenan en búfer por separado
○ Los búferes de bus de datos deben ser
búferes bidireccionales (BB).
11
● Cambiar los datos en el bus de datos.
● Emita una escritura y configure M/ E/S en 1.
12
● Sincronización del BUS:
BUS Timing
● Durante T 1 :
● La dirección se coloca en el bus de dirección / datos.
● Las señales de control M / IO, ALE y DT / R especifican
memoria o E / S, enganchan la dirección en el bus de
direcciones y establecen la dirección de transferencia de datos
en el bus de datos.
● Durante T 2 :
● 8086 emite la señal RD o WR, DEN y, para una escritura, los
datos.
○ DEN permite que la memoria o el
dispositivo de E / S reciba los datos para
las escrituras y el 8086 los reciba para las
lecturas.
● Durante T 3 :
13
● Este ciclo se proporciona para permitir que la memoria acceda
a los datos.
● Se muestra listo al final T 2 .
○ Si está bajo, T 3 cambia a espera.
○ Caso contrario, el bus de datos se
muestrea al final deT 3 .
● Durante T 4 :
● Todas las señales de bus se desactivan, en preparación para el
próximo ciclo de bus.
● Los datos se muestrean para las lecturas, las escrituras se
producen para las escrituras.
Sincronización del BUS
● Sincronización:
○ Cada CICLO DE BUS en el 8086 equivale a
cuatro períodos de reloj del sistema (estados
T).
○ La frecuencia de reloj es de 5 MHz, por lo
tanto, un ciclo de bus es de 800 ns.
○ La tasa de transferencia es de 1,25 MHz.
14
configuración, p. Ej. Configuración de
direcciones y configuración de datos.
○ Esto resta alrededor de 150ns.
○ Por lo tanto, la memoria debe acceder en
al menos 450ns menos otra banda de
protección de 30-40ns para búferes y
decodificadores.
15
● El texto analiza el papel del 8284A y los requisitos
de tiempo para el 8086.
Modo MIN y MAX
● Controlado a través del pin MN / MX.
● El modo mínimo es más económico ya que todas las señales de
control para la memoria y las E / S son generadas por el
microprocesador.
● El modo máximo está diseñado para usarse cuando existe un
coprocesador (8087) en el sistema.
16
● Se utilizan señales separadas para E / S (IORC e IOWC)
y memoria (MRDC y MWTC).
● También se proporcionan luces estroboscópicas de
escritura de memoria avanzada (AIOWC) y E / S
(AIOWC) más INTA.
Modo MAX 8086 Sistema
17
2. DECODIFICADOR DE LENGUAJE MÁQUINA DEL PROCESADOR INTEL
8088
18
● Registro/memoria a registro de segmentación
● Registro de segmentación a registro/memoria
Donde:
‘W’ nos informa del tamaño de los operandos. Con W = 0 estamos accediendo a
8 bits y con W = 1 a una palabra, es decir 16 bits.
‘Reg’ nos indica el registro que se utilizara, para lo cual existen las siguientes
combinaciones (tabla 1)
19
Desarrollo
Por lo que la primera parte del código se centra en encontrar estos valores
(Figura 1), de no encontrarse se mandará un mensaje de error. La comparación
se realiza con el valor en ASCI correspondiente a cada término.
20
Segundo término: Posteriormente se procede a hacer la comparación del
segundo término de cada instrucción Fig. 2, empezando de esta forma a separar
cada tipo de transferencia de datos.
21
Debido a que la entrada está dada en hexadecimal y lo que el programa recibe es
su correspondiente en ASCII, es necesario hacer una conversión, así como
delimitar el rango en el cual está permitido introducir los datos, esto es, valores
de 0~9 y A~F (Fig. 3).
22
Siguiente instrucción
Resultados
23
Conclusiones
24
DECODIFICADOR DE LENGUAJE MÁQUINA DEL PROCESADOR INTEL 8088
Anexo 1. Código en ensamblador
.model small
.stack 100
.data
.386
cad db 500 DUP(?)
sds db ?
aux1 db ?
aux2 db ?
aux3 db ?
ctrl db 0
w db 0
b db 0
rs db 2
sr db 0
mac db 0
moov db 13,10,"mov ",'$'
r8al db,"AL",'$'
r8ah db,"AH",'$'
r8bl db,"BL",'$'
r8bh db,"BH",'$'
r8cl db,"CL",'$'
r8ch db,"CH",'$'
r8dl db,"DL",'$'
r8dh db,"DH",'$'
r16ax db,"AX",'$'
r16bx db,"BX",'$'
r16cx db,"CX",'$'
r16dx db,"DX",'$'
r16sp db,"SP",'$'
r16bp db,"BP",'$'
r16si db,"SI",'$'
r16di db,"DI",'$'
rses db,"ES",'$'
rscs db,"CS",'$'
rsss db,"SS",'$'
rsds db,"DS",'$'
pac db,"[",'$'
pab db,"]",'$'
coma db,",",'$'
mov ah,9
mov dx,offset inst
int 21h
inicio1:
mov ah,1
int 21h
cmp al,42
jz inicio2
mov [cad+SI],al
add SI,1
cmp SI,499
jz fin
jnz inicio1
mov ah,2
int 21h
;------empieza la comparacion
;-----comparacion del primer termino
compa:
cmp [cad+SI],42 ; * asterisco
jz error
cmp [cad+SI],38h ; 8
jz seg_ter_8
cmp [cad+SI],41H ; A
jz seg_ter_a
cmp [cad+SI],42h ; B
jz seg_ter_b
jnz error
cmp [cad+SI],41h ; A
jz ult_ter_rm_8
cmp [cad+SI],42H ; B
jz ult_ter_rm_16
cmp [cad+SI],43h ; C
jz ult_ter_segre
cmp [cad+SI],45h ; E
jz ult_ter_reseg
jnz error
ult_ter_rm_16:
mov w,1
;--------ultimos terminos para 8A
ult_ter_rm_8:
add SI,1
mov ah,[cad+SI]
add SI,1
mov al,[cad+SI]
;valor puro letras tercer termino
mov aux1,ah ;C~F
;sub aux1,37h ;letras
mov aux2,al
;empieza comparacion primer termino
nxt2:
sub aux1,37h ;letras
;valor puro numeros cuarto termino
;empieza comparacion segundo termino
cmp aux2,30h
jz val_pu_num ; el valor es 0
val_pu_num:
sub al,30h
mov aux2,al
jmp nxt
val_pur_let:
sub al,37h
mov aux2,al
nxt:
;seleccionando los valores importantes
and aux1,3h
and al,8h
;corrimientos
mov cl,1
shl aux1,cl
mov cl,3
shr al,cl
add aux1,al ;primer registro
and aux2,7h ;segundo registro
cmp aux1,0
jnz uno
mov ah,9
cmp w,1
jz cero16
mov dx,offset r8al
int 21h
jmp ult_8A
cero16:
mov dx,offset r16ax
int 21h
jmp ult_8A
uno:
cmp aux1,1
jnz dos
cmp w,1
jz uno16
mov dx,offset r8cl
int 21h
jmp ult_8A
uno16:
mov dx,offset r16cx
int 21h
jmp ult_8A
dos:
cmp aux1,2
jnz tres
cmp w,1
jz dos16
mov dx,offset r8dl
int 21h
jmp ult_8A
dos16:
mov dx,offset r16dx
int 21h
jmp ult_8A
tres:
cmp aux1,3
jnz cuatro
cmp w,1
jz tres16
mov dx,offset r8bl
int 21h
jmp ult_8A
tres16:
mov dx,offset r16bx
int 21h
jmp ult_8A
cuatro:
jnz cinco
cmp w,1
jz cuatro16
mov dx,offset r8ah
int 21h
jmp ult_8A
cuatro16:
mov dx,offset r16sp
int 21h
jmp ult_8A
cinco:
cmp aux1,5
jnz seis
cmp w,1
jz cinco16
mov dx,offset r8ch
int 21h
jmp ult_8A
cinco16:
mov dx,offset r16bp
int 21h
jmp ult_8A
seis:
cmp aux1,6
jnz siete
cmp w,1
jz seis16
mov dx,offset r8dh
int 21h
jmp ult_8A
seis16:
mov dx,offset r16si
int 21h
jmp ult_8A
siete:
cmp aux1,7
jnz error
cmp w,1
jz siete16
mov dx,offset r8bh
int 21h
siete16:
mov dx,offset r16di
int 21h
ult_8A:
mov dx,offset coma
int 21h
reg_b:
mov ah,9
cmp aux2,0
jnz uno2
cmp w,1
jz cero16_2
cmp b,1
jz ult_b
cmp mac,0
jnz acume
jmp sig_lin
cero16_2:
mov dx,offset r16ax
int 21h
cmp b,1
jz ult_b
cmp rs,0
jz sego
cmp mac,0
jnz acume
jmp sig_lin
uno2:
cmp aux2,1
jnz dos2
cmp w,1
jz uno16_2
mov dx,offset r8cl
int 21h
cmp b,1
jz ult_b
jmp sig_lin
uno16_2:
mov dx,offset r16cx
int 21h
cmp b,1
jz ult_b
cmp rs,0
jz sego
jmp sig_lin
dos2:
cmp aux2,2
jnz tres2
cmp w,1
jz dos16_2
mov dx,offset r8dl
int 21h
cmp b,1
jz ult_b
jmp sig_lin
dos16_2:
mov dx,offset r16dx
int 21h
cmp b,1
jz ult_b
cmp rs,0
jz sego
jmp sig_lin
tres2:
cmp aux2,3
jnz cuatro2
cmp w,1
jz tres16_2
mov dx,offset r8bl
int 21h
cmp b,1
jz ult_b
jmp sig_lin
tres16_2:
mov dx,offset r16bx
int 21h
cmp b,1
jz ult_b
cmp rs,0
jz sego
jmp sig_lin
cuatro2:
cmp aux2,4
jnz cinco2
cmp w,1
jz cuatro16_2
mov dx,offset r8ah
int 21h
cmp b,1
jz ult_b
jmp sig_lin
cuatro16_2:
mov dx,offset r16sp
int 21h
cmp b,1
jz ult_b
cmp rs,0
jz sego
jmp sig_lin
cinco2:
cmp aux2,5
jnz seis2
cmp w,1
jz cinco16_2
mov dx,offset r8ch
int 21h
cmp b,1
jz ult_b
jmp sig_lin
cinco16_2:
mov dx,offset r16bp
int 21h
cmp b,1
jz ult_b
cmp rs,0
jz sego
jmp sig_lin
seis2:
cmp aux2,6
jnz siete2
cmp w,1
jz seis16_2
mov dx,offset r8dh
int 21h
cmp b,1
jz ult_b
jmp sig_lin
seis16_2:
mov dx,offset r16si
int 21h
cmp b,1
jz ult_b
cmp rs,0
jz sego
jmp sig_lin
siete2:
cmp aux2,7
jnz error
cmp w,1
jz siete16_2
mov dx,offset r8bh
int 21h
cmp b,1
jz ult_b
jmp sig_lin
siete16_2:
mov dx,offset r16di
int 21h
cmp b,1
jz ult_b
cmp rs,0
jz sego
jmp sig_lin
;--------Segmentacion a registro
;tercer termino de 8C
ult_ter_segre:
mov w,1
add SI,1
cmp [cad+SI],43h
jz dscero
cmp [cad+SI],44h
jz dsuno
jnz error
dscero:
mov sds,0
jmp nxto1
dsuno:
mov sds,1
nxto1:
add SI,1
cmp [cad+SI],42
jz error
cmp [cad+SI],30h
jz purnum1 ; el valor es 0
purnum1:
mov al,[cad+SI]
sub al,30h
mov aux2,al
jmp nxto3
vallet1:
mov al,[cad+SI]
sub al,37h
mov aux2,al
nxto3:
and al,8
and aux2,7 ; registro
mov cl,3
shr al,cl
mov cl,1
shl sds,cl
add sds,al ;segmento a elegir
mov rs,0
;-----segmentacion
mov ah,9
mov dx,offset moov
int 21h
jmp reg_b
sego:
mov ah,9
mov dx,offset coma
int 21h
cmp sds,0
jnz csds1
mov ah,9
mov dx,offset rses
int 21h
jmp sig_lin
csds1:
cmp sds,1
jnz csds2
mov ah,9
mov dx,offset rscs
int 21h
jmp sig_lin
csds2:
cmp sds,2
jnz csds3
mov ah,9
mov dx,offset rsss
int 21h
jmp sig_lin
csds3:
cmp sds,3
jnz error
mov ah,9
mov dx,offset rsds
int 21h
jmp sig_lin
;--------Registro a Segmentacion
;tercer termino de 8E
ult_ter_reseg:
mov w,1
add SI,1
cmp [cad+SI],43h
jz dscero1
cmp [cad+SI],44h
jz dsuno1
jnz error
dscero1:
mov sds,0
jmp nxto4
dsuno1:
mov sds,1
nxto4:
add SI,1
cmp [cad+SI],42
jz error
cmp [cad+SI],30h
jz purnum2 ; el valor es 0
purnum2:
mov al,[cad+SI]
sub al,30h
mov aux2,al
jmp nxto5
vallet2:
mov al,[cad+SI]
sub al,37h
mov aux2,al
nxto5:
and al,8
and aux2,7 ; registro
mov cl,3
shr al,cl
mov cl,1
shl sds,cl
add sds,al ;segmento a elegir
mov rs,1
mov ah,9
mov dx,offset moov
int 21h
cmp sds,0
jnz csds_1
mov ah,9
mov dx,offset rses
int 21h
mov ah,9
mov dx,offset coma
int 21h
jmp reg_b
csds_1:
cmp sds,1
jnz csds_2
mov ah,9
mov dx,offset rscs
int 21h
jmp reg_b
csds_2:
cmp sds,2
jnz csds_3
mov ah,9
mov dx,offset rsss
int 21h
jmp reg_b
csds_3:
cmp sds,3
jnz error
mov ah,9
mov dx,offset rsds
int 21h
jmp reg_b
;--------Segundo termino de A
seg_ter_a:
add SI,1
cmp [cad+SI],42
jz error
cmp [cad+SI],30h
jz acum_mem
cmp [cad+SI],31h
jz acum_mem
cmp [cad+SI],32h
jz mem_acum
cmp [cad+SI],33h
jz mem_acum
jnz error
;------0/1
mem_acum:
mov al,[cad+SI]
sub al,32h
cmp al,1
jz w16
mov w,0
jmp dire
w16:
mov w,1
dire:
mov ctrl,0
mov aux2,0
mov mac,0
mov ah,9
mov dx,offset moov
int 21h
acumed:
mov ah,9
mov dx,offset pac
int 21h
;---direccion baja
add SI,1
cmp [cad+SI],42
jz error
cmp [cad+SI],30h
js error ;si el valor es menor que 0
sav:
mov bh,[cad+SI]
add SI,1
cmp [cad+SI],42
jz error
cmp [cad+SI],30h
js error ;si el valor es menor que 0
;----direccion alta
add SI,1
cmp [cad+SI],42
jz error
cmp [cad+SI],30h
js error ;si el valor es menor que 0
lilet3:
cmp [cad+SI],41h ;1er limite de letras
js error
cmp [cad+SI],46h ;2do limite de letras
jns error
sav3:
mov al,[cad+SI]
mov aux1,al
add SI,1
cmp [cad+SI],42
jz error
cmp [cad+SI],30h
js error ;si el valor es menor que 0
sav4:
mov al,[cad+SI]
mov aux3,al
mov ah,2
mov al,aux1
pra:
mov dl,al
int 21h
add ctrl,1
cmp ctrl,1
jnz direba0
direal1:
mov al,aux3
jmp pra
direba0:
cmp ctrl,2
jnz direba1
mov al,bh
jmp pra
direba1:
cmp ctrl,3
jnz preg
mov al,bl
jmp pra
preg:
mov ah,9
mov dx,offset pab
int 21h
cmp mac,1
jz sig_lin
jmp reg_b
;--------Inmediato a registro
;2/3
acum_mem:
mov mac,1
mov ctrl,0
mov aux2,0
mov al,[cad+SI]
sub al,30h
cmp al,1
jz w162
mov w,0
jmp w82
w162:
mov w,1
w82:
mov ah,9
mov dx,offset moov
int 21h
jmp reg_b
acume:
mov ah,9
mov dx,offset coma
int 21h
jmp acumed
;--------Inmediato a registro
;segundo termino de B
seg_ter_b:
add SI,1
cmp [cad+SI],42
jz error
cmp [cad+SI],30h
jz purnum ; el valor es 0
js error ;si el valor es menor que 0
purnum:
mov al,[cad+SI]
sub al,30h
mov aux2,al
jmp nxto
vallet:
mov al,[cad+SI]
sub al,37h
mov aux2,al
nxto:
and al,8
and aux2,7 ; registro
mov cl,3
shr al,cl
mov w,al
mov b,1
;tercer termino de B
add SI,1
cmp [cad+SI],42
jz error
;----------------------------
lim:
cmp [cad+SI],30h
js error ;si el valor es menor que 0
mover:
cmp ctrl,0
jnz b16
b8:
mov al,[cad+SI]
mov aux3,al
add ctrl,1
jmp b82
b16:
mov bh,[cad+SI]
add ctrl,1
b82:
add SI,1
cmp [cad+SI],30h
jz mover1 ; el valor es 0
js error ;si el valor es menor que 0
b163:
mov bl,[cad+SI]
jmp pr
a42:
cmp w,1
jnz pr
add SI,1
add ctrl,1
jmp lim
pr:
mov ah,9
mov dx,offset moov
int 21h
jmp reg_b
ult_b:
mov ah,9
mov dx,offset coma
int 21h
cmp ctrl,1
jnz pr8
baj:
mov ah,2
mov dl,aux3
int 21h
mov ah,2
mov dl,aux1
int 21h
jmp sig_lin
pr8:
mov ah,2
mov dl,bh
int 21h
mov ah,2
mov dl,bl
int 21h
jmp baj
;--------siguiente instruccion
sig_lin:
add SI,1
cmp [cad+SI],42
jz fin
mov w,0
mov b,0
mov ctrl,0
mov rs,2
mov mac,0
jnz compa
;--------fin de programa
error:
mov ah,9
mov dx,offset eror
int 21h
jmp fin
fin:
mov ah,9
mov dx,offset fiin
int 21h
mov ah,4ch
int 21h
end