.
![]()
Indice:
- Generalidades del 8085
- Hardware del 8085
- Instrucciones del 8085
- Instrucciones de transferencia de datos
- Instrucciones aritméticas
- Instrucciones lógicas
- Instrucciones de desplazamiento
- Instrucciones de salto
- Instrucciones de subrutinas
- Instrucciones de pila
- Instrucciones de control
- Manejo del simulador 8085
- Manejo del micro 8085 desde el PC
- Introducción
- Comandos
- Subrutinas
- direcciones de nuestros programas
- Manejo del micro 8085 desde la consola
- Introducción
- Comandos
- Interrupciones
- Grabar y leer desde una cinta cassette
- Prácticas
- Manejo del entrenador
- PRÁCTICA 11
- Semáforo
- PRÁCTICA 12
1.1.- Hardware del 8085
Dentro del 8085 tenemos los siguientes registros:
![]()
Todos estan conectados entre si, y el 8085 tiene exteriormente 3 buses como todos los microprocesadores (pero con tamaños diferentes):
Nombre bits comentarios D.B. Bus de datos
(data bus)8 conectado al R.I. desde este registro la U.C. lee las instrucciones y las procesa. A.B. Bus de direcciones
(Adrress Bus)16 conectado al PC indica la dirección de memoria del programa que se esta leyendo. C.B. Bus de Control 10 Conectado a la U.C. para controlar el sistema Hay que señalar que el 8085 tiene el bus de direcciones multiplexado, es decir, tiene 8 pines AD0 .... AD7 que son bus de datos y bus de direcciones (la parte baja), para diferenciarlo tiene un pin llamadoALE que cuando es 0 las lineas AD0...AD7 es bus de datos D0...D7, y cuando ALE=1, las lineas AD0...AD7 es parte baja del bus de direcciones A0...A7.
El bus de control además del ALE, tiene los siguientes pines:
En la pag 280 y 281 explica el funcionamiento de cada uno de los registros, unidades etc.., señala brevemente el significado de cada uno de ellos:
- Lectura Escritura: RD# y WR#
- Acceso a memoria o a periféricos: IO/M#.
- pin indicador de estar preparado para atender al dispositivo exterior : READY.
- pin indicador que el dispositivo externo esta ocupando los buses : HOLD.
- pin indicador que el 8085 no hace caso a los buses HLDA.
- pin indicador que el 8085 se ha reseteado RESETOUT.
- y pines indicadores de estado S0 S1 (S0S1 =01 Escribe dato, =10 Lee dato, =11 Busca dirección).
Descripción A
B, C
D, E
H, L
Flag
S
Z
AC
P
CYALU
U.C.
R.I. P.C. S.P. 1.2.- Instrucciones del 8085
Nomenclatura:
r = un registro de 1 byte , puede ser cualquiera de estos : A, B,C,D,E,H,L.
(rs =registro origen de datos, source, rd = registro destino de los datos)
[1000] = el dato almacenado en la dirección 1000H
[HL] = el dato almacenado en la dirección contenida en el registro HL
M = " " "
dato = un número de 1 byte, por ejemplo 4AH, suelen ser los datos.
addr = un número de 2 bytes, por ejemplo 10B2H, suelen ser las direcciones
H=hexadecimal, B=Binario, D = Decimal1.2.1.- Instrucciones de transferencia de datos
MOV rd,rs
MOV rd,M
MOV M,rs
MVI rd,datoLDA addr
STA addr
LDAX B
STAX B
LDAX D
STAX DLHLD addr
SHLD addr
XCHG LXI B,addr
LXI D,addr
LXI H,addrejemplo de utilización :
1.2.2.- Instrucciones aritméticas
ADD rs ADD M
ADI dato
SUB rs SUB M
SBI dato
ADC rs ADC M
ACI dato
SBB rs SBB M
SBI dato
INR rs INR M
INX B
INX D
INX H
DCR rs DCR M
DCX B
DCX D
DCX H
DAD B DAD D
DAA
STC CMC
1.2.3.- Instrucciones lógicas
ANA rs ANA M
ANI dato
XRA rs XRA M
XRA dato
ORA rs ORA M
ORI dato
CMA
CMP rs CMP M
CPI dato
alteran solo el flag : Z, S, CY, AC ...
1.2.4 Instrucciones de desplazamiento
RLC RRC
RAL
RAR
1.2.5 Instrucciones de salto
JMP addr Jcondicion addr
PCHL
RSTn
condición puede ser alguna de las siguientes: Z
NZ
P
M
C
NC
PO
PE1.2.6 Instrucciones para las subrutinas
CALL addr Ccondición
RET Rcondición
1.2.7.- Pila
PUSH B POP B
PUSH D POP D
XTHL SPHL
1.2.8.-Instrucciones de control
HLT NOP
IN puerto OUT puerto
SIM EI
a).- Vamos a realizar un pequeño ejemplo de funcionamiento. Vamos a mover el contenido de la dirección 2000H al acumulador, y almacenarlo en la 2001H, y el contenido de la dirección 2002H moverlo al registro B, y almacenarlo en la 2003H.Escribir el siguiente programa en un editor, por ejemplo el EDIT de MS-DOS, guardarlo como PRUEBA.ASM el archivo fuente debe de tener la extensión *.ASM(vamos al direcctorio 8085, desde el raiz : CD 8085, y EDIT PRUEBA.ASM)
![]()
todo lo que se escribe después de ; no se ensambla, así que se puede utilizar como comentarios.
ORG = organizar las siguientes líneas a partir de la dirección en este caso 2000H
DB=se utiliza para poner datos, en este caso, pone 05 en 2000, A4 en 2001 etc...
aquí DATO1 es una etiqueta, y toma el valor de la dirección donde esta escrita, en este caso DATO1 es igual a 2000 ¿y DATO2? hay que poner : y escribirlas en la primera columna, el resto del programa a partir de la columna 10.
también puede haberse escrito:
DATO1 EQU 2000H
EQU= equivale a ...
el programa se ha escrito a partir de la dirección 1000H, carga el acumulador (loadA) y lo almacena (storeA), podría haberse escrito STA 2000H y LDA 2001H, para el registro B hay que utilizar el registro M, antes de utilizar el registro M hay que cargar HL la dirección que queremos, LXI H,DATO3 = LXI H,2002H, lo mueve a B, y para moverlo al 2003 podría haberse escrito LXI H,2003H o como en este caso, incrementando lo que tenía, movemos de B a M, y para finalizar END.b).- después de guardarlo ensamblarlo con la instrucción: ASM8085 PRUEBA.CCC esto crea 3 ficheros, si salen errores hay que corregirlo en el prueba.asm:
PRUEBA.ERR = listado de errores de 1ª pasada.
(A=argumento erróneo, D=etiqueta no existe, L=etiqueta erronea, U=símbolo indefenido, S= error sintaxis)
PRUEBA.LST = listado del programa, aquí salen los errores de 2ª pasada.
PRUEBA.OBJ = listado en lenguaje máquina.c).- simularlo con el programa SIM8085, una vez dentro pulsar F4 y cargar el PRUEBA.OBJ, utilizar los siguientes comandos:
V=ver memoria, en este caso nos interesa ver lo que hay en la 2000H y siguientes.
M=modificar memoria, si queremos alterar los nº que hemos metido.
R=modificar los registros, en este caso pondremos el contador del programa PC en la dirección de comienzo de nuestro programa: 1000H
T=trazar o ejecutar paso a paso, ir pulsando y observar lo que ocurre en cada instrucción.
Q=salir otras utilidades:
F1 visualiza una ayuda
C=ver el código
E=ejecutar entre dos direcciones, ESC para salir, I para interrupción 7.5