Problema: escriba un programa para encontrar la suma de una serie donde la serie comienza desde la dirección de memoria 3001 y el recuento de la serie está en la dirección de memoria 3000 donde la dirección inicial del programa dado es 2000 almacena el resultado en la dirección de memoria 4000 .
Ejemplo –
Algoritmo –
- Mueva 00 para registrar B inmediatamente para llevar
- Cargue los datos de la memoria [3000] en H inmediatamente
- Mover el valor de la memoria al registro C
- Disminuir C en 1
- Aumentar el par HL en 1
- Mover el valor de la memoria al acumulador
- Aumentar el par HL en 1
- Agregar valor de memoria con acumulador
- Saltar si no lleva al paso 11
- Aumenta el valor del registro B en uno
- Disminuye el registro C en 1
- Saltar si no es cero al paso 7
- Almacene el contenido del acumulador en la memoria [4000] ( resultado )
- Mover el contenido del registro B al acumulador
- Almacene el contenido del acumulador en la memoria [4001] ( carry )
- Deténgase
Programa –
Memoria | Mnemotécnica | operandos | Comentario |
---|---|---|---|
2000 | IMV | segundo, 00 | [B] <- 00 |
2002 | LXI | H, [3000] | [HL] <- [3000] |
2005 | MOVIMIENTO | CM | [C] <- [M] |
2006 | RDC | C | [C] <- [C] – 1 |
2007 | INX | H | [HL] <- [HL] + 1 |
2008 | MOVIMIENTO | SOY | [A] <- [M] |
2009 | INX | H | [HL] <- [HL] + 1 |
200A | AGREGAR | METRO | [A] <- [A] + [M] |
200B | JNC | 200F | salta si no lleva |
200E | USD | B | [B] <- [B] + 1 |
200F | RDC | C | [C] <- [C] – 1 |
2010 | JNZ | 2009 | salta si no cero |
2013 | ESTA | [4000] | resultado |
2016 | MOVIMIENTO | un, b | [A] <- [B] |
2017 | ESTA | [4001] | llevar |
201A | HLT | Deténgase |
Explicación: los registros A, B, C, H se utilizan para fines generales.
- MVI se usa para cargar un registro dado de 8 bits inmediatamente (instrucción de 2 bytes)
- LXI se usa para cargar el par de registros inmediatamente usando una dirección de 16 bits (instrucción de 3 bytes)
- MOV se utiliza para transferir los datos del acumulador al registro (cualquiera) o registro (cualquiera) al acumulador (1 byte)
- RAR se usa para desplazar ‘A’ a la derecha con acarreo (instrucción de 1 byte)
- STA se usa para almacenar datos del acumulador en la memoria directamente usando una dirección de 16 bits (instrucción de 3 bytes)
- INR se usa para aumentar el registro dado en 1 (instrucción de 1 byte)
- JNC se usa para saltar al paso dado si no hay acarreo (instrucción de 3 bytes)
- JNZ se usa para saltar al paso dado si no es cero (instrucción de 3 bytes)
- DCR se usa para disminuir el registro dado en 1 (instrucción de 1 byte)
- INX se usa para aumentar el par de registros en 1 (instrucción de 1 byte)
- ADD se usa para agregar el valor del acumulador con el valor dado (instrucción de 1 byte)
- HLT se utiliza para detener el programa