Instrucciones del microprocesador 8085 por Vicente Martinez: vicentemartinez@mixmail.com Cuando me refiero a los registros "r" (ya sea r1,r2 o simplemente r) estoy hablando de cualquier registro propio del 8085, A(Acumulador), o los regis- tros B,C,D,E,H,L de 8 bits respectivamente. Estos registros se pueden agrupar por parejas BC,DE,HL (rp) y asi formar registros de 16 bits para direccionar una posicion de memoria directamente(16 BITS), siendo el par HL el mas importante por tener instrucciones que trabajan di- rectamente con el. **Instrucciones de transferencia de datos: Intruccion codigo Explicación MOV r1,r2 01DDDRRR Carga el registro r1(DDD) con el contenido del r2(RRR). MOV r,M 01DDD110 Carga el registro r(DDD) con el contenido de la direccion apuntada en el par HL. MOV M,r 01110RRR Carga la direccion apuntada por HL con el contenido del registro r(RRR). MVI r 00DDD110 Carga el registro r de modo inmediato con el 2º Byte de la instruccion. MVI M 00110110 Carga la direccion apuntada por HL con el 2º Byte de la instruccion. LXI rp 00DD0001 Carga el par de registros rp(seran BC,DE,HL) con el 2º y 3º Byte de la instruccion. LDA 00111010 Carga el acumulador con el contenido de la direccion apuntada en el 2º y 3º Byte de la instruccion. STA 00110010 Carga la posicion apuntada por el 2º y 3º Byte de la instruccion con el contenido del acumulador. LHLD 00101010 Carga los registros HL con el contenido de la posicion apuntada por 2º y 3º Byte (carga L) y por la apuntada por 4º y 5º Byte (carga H) de la instruccion. SHLD 00100010 Almacena el contenido de HL en la posicion que indica el 2º y 3º Byte y la siguiente respectivamente. LDAX rp 00RR1010 Carga el acumulador con el contenido de la direccion que apunta el par de registros rp (RR) solo para los registros pares BC y DE XCHG 11101011 Intercambia el contenido del par HL por el contenido del par DE. Todas las anteriores: Instruccion codigo(Hex) Instruccion codigo(Hex) MOV A,A 7F MOV B,A 47 MOV A,B 78 MOV B,B 40 MOV A,C 79 MOV B,C 41 MOV A,D 7A MOV B,D 42 MOV A,E 7B MOV B,E 43 MOV A,H 7C MOV B,H 44 MOV A,L 7D MOV B,L 45 MOV A,M 7E MOV B,M 46 MOV C,A 4F MOV D,A 57 MOV C,B 48 MOV D,B 50 MOV C,C 49 MOV D,C 51 MOV C,D 4A MOV D,D 52 MOV C,E 4B MOV D,E 53 MOV C,H 4C MOV D,H 54 MOV C,L 4D MOV D,L 55 MOV C,M 4E MOV D,M 56 MOV E,A 5F MOV H,A 67 MOV E,B 58 MOV H,B 60 MOV E,C 59 MOV H,C 61 MOV E,D 5A MOV H,D 62 MOV E,E 5B MOV H,E 63 MOV E,H 5C MOV H,H 64 MOV E,L 5D MOV H,L 65 MOV E,M 5E MOV H,M 66 MOV L,A 6F MOV M,A 77 MOV L,B 68 MOV M,B 70 MOV L,C 69 MOV M,C 71 MOV L,D 6A MOV M,D 72 MOV L,E 6B MOV M,E 73 MOV L,H 6C MOV M,H 74 MOV L,L 6D MOV M,L 75 MOV L,M 6E MOV M,M 76 MVI A,BYTE 3E LXI B,DOBLE BYTE 01 MOV B,BYTE 06 LXI D,BOBLE BYTE 11 MOV C,BYTE 0E LXI H,DOBLE BYTE 21 MOV D,BYTE 16 LXI SP,DOBLE BYTE 31(para definir el STACK P.) MOV E,BYTE 1E MOV H,BYTE 26 LDAX B 0A MOV L,BYTE 2E LDAX D 1A MOV M,BYTE 36 LHLD DIRECCION 2A LDA DIRECCION 3A STAX B 02 STAX D 12 XCHG EB SHLD DIRECCION 22 STA DIRECCION 32 BYTE= VALOR ENTRE 0 Y FF (0 Y 255 EN DECIMAL) DOBLE BYTE= DOS BYTES PARA FORMAR 16 BITS DIRECCION = 16 BITS o 2 BYTES **Instrucciones Aritmetico logicas: Instruccion codigo explicacion ADD r 10000RRR Suma al acumulador el registro r y el resultado queda en el acumulador. ADD M 10000110 Suma al acumulador el contenido de la posicion apuntada por HL y resultado en acumulador. ADI 11000110 Suma al acumulador el 2º byte de la instruccion y resultado en acumulador. ADC r 10001RRR Suma al acumulador el registro r y el carry ,resultado en acumulador. ADC M 10001110 Suma a acumulador el contenido de la posicion apuntada por HL y el carry, result. en acumulador. ACI 11001110 Suma al acumulador el 2º byte de la instruccion y el carry y resultado en acumulador. SUB r 10010RRR Resta al acumulador el contenido del registro r y lo deja en el acumulador. SUB M 10010110 Resta al acumulador el contenido de la posicion que apunta HL y resultado al acumulador. SUI 11010110 Resta al acumulador el 2º byte de la instruccion. SBB r 10011RRR Resta al acumulador el registro r + el carry. SBB M 10011110 Resta al acumulador el contenido de la posicion que apunta HL. SBI 11011110 Resta al acumulador el 2º byte + el carry. INR r 00RRR100 Incrementa en 1 el registro r.(Z;S;P;AC) INR M 00110100 Incrementa en 1 el contenido de la posicion que apunta HL (Z;S;P;AC) DCR r 00RRR101 Decrementa en 1 el registro r (Z;S;P;AC) DCR M 00110101 Decrementa en 1 el contenido de la posicion que apunta HL (Z;S;P;AC) INX rp 00RR0011 Incrementa en 1 el par rp de registros.BC,DE,HL DCX rp 00RR1011 Decrementa en 1 el par rp de registros.BC,DE,HL DAD rp 00RR1001 Suma a HL el par de registros rp (CY a veces). DAA 00100111 Los 8 bits del acumulador se ajusta a BCD=decimal.(flags) ENTRE PARENTESIS() FLAGS AFECTADOS POR LA INSTRUCCION. Todas las anteriores: Instruccion codigo(Hex) instruccion codigo(Hex) ADD A 87 ADC A 8F ADD B 80 ADC B 88 ADD C 81 ADC C 89 ADD D 82 ADC D 8A ADD E 83 ADC E 8B ADD H 84 ADC H 8C ADD L 85 ADC L 8D ADD M 86 ADC M 8E SUB A 97 SBB A 9F SUB B 90 SBB B 98 SUB C 91 SBB C 99 SUB D 92 SBB D 9A SUB E 93 SBB E 9B SUB H 94 SBB H 9C SUB L 95 SBB L 9D SUB M 96 SBB M 9E INR A 3C DCR A 3D INR B 04 DCR B 05 INR C 0C DCR C 0D INR D 14 DCR C 15 INR E 1C DCR D 1D INR H 24 DCR H 25 INR L 2C DCR L 2D INR M 34 DCR M 35 INX B 03 DCX B 0B INX D 13 DCX D 1B INX H 23 DCX H 2B INX SP 33 DCX SP 3B(SP=STACK POINTER) ADI BYTE C6 DAD B D9 ACI BYTE CE DAD D 19 SUI BYTE D6 DAD H 29 SBI BYTE DE DAD SP 39 DAA 27 **Intrucciones logicas: Instrucion codigo Explicacion ANA r 10100RRR AND entre el acumulador y el registro r (flags, CY=0,AC=1) ANA M 10100110 AND entre el acumulador y el contenido de la posicion apuntada por HL(flags idem) ANI 11100110 AND entre el acumulador y el 2º byte de la instruccion (flags idem) XRA r 10101RRR OR Exclusiva entre el acumulador y el regis- tro r (flags,CY y AC=0) XRA M 10110110 OR Exclusiva entre el acumulador y el conte- nido de la posicion de HL(flags idem) XRI 11101110 OR Exclusiva entre el acumulador y el 2º byte de la instruccion(flags idem) ORA r 10110RRR OR entre el acumulador y el registro r(flags idem) ORA M 10110110 OR entre el acumulador y el contenido de la posicion apuntada por HL(flags idem) ORI 11110110 OR entre acumulador y 2º byte de la instrucion(idem) CMP r 10111RRR Compara el acumulador con el registro r no laterando el contenido del acumulador(si A=1 Z=1,si A