Problema : escriba un programa para mover bloques de bits desde la ubicación de origen a partir de 2500 a la ubicación de destino a partir de 2600 , donde el tamaño de los bloques es de 05 bytes.
Ejemplo –
Algoritmo –
- Cargue el par de registros HL con la dirección 2500H
- Cargue el par de registros DE con la dirección 2600H
- Mueva el contenido en la ubicación de la memoria al acumulador
- Almacene el contenido del acumulador en la memoria señalada por DE
- Incrementa el valor del par de registros HL y DE en 1
- Decrementa el valor del registro C en 1
- Si el indicador cero no es igual a 1, vaya al paso 3
- Deténgase
Programa –
Memoria | Mnemotécnica | operandos | Comentario |
---|---|---|---|
2000 | IMV | C, 05 | [C] <- 05 |
2002 | LXI | alto, 2500 | [HL] <- 2500 |
2005 | LXI | D, 2600 | [ES] <- 2600 |
2008 | MOVIMIENTO | SOY | [A] <- [[HL]] |
2009 | STAX | D | [A] -> [[DE]] |
200A | INX | H | [HL] <- [HL] + 1 |
200B | INX | D | [DE] <- [DE] + 1 |
200C | RDC | C | [C] <- [C] – 1 |
200D | JNZ | 2008 | Saltar si no cero a 2008 |
2010 | HLT | Deténgase |
Explicación: los registros A, D, E, H, L, C se utilizan para fines generales:
- MOV se utiliza para transferir los datos de la memoria al acumulador (1 byte)
- LXI se usa para cargar el par de registros inmediatamente usando una dirección de 16 bits (instrucción de 3 bytes)
- MVI se utiliza para mover datos inmediatamente a cualquiera de los registros (2 bytes)
- STAX se usa para almacenar el acumulador en un par de registros indirectamente (instrucción de 3 bytes)
- DCR se utiliza para disminuir el registro en 1 (instrucción de 1 byte)
- INX se usa para aumentar el par de registros en 1 (instrucción de 1 byte)
- JNZ se usa para saltar, si no es cero, a una ubicación de memoria dada (instrucción de 3 bytes)
- HLT se utiliza para detener el programa