Problema: Escriba un programa en lenguaje ensamblador para sumar dos números de 16 bits usando:
- operación de 8 bits
- operación de 16 bits
Ejemplo:
1. Suma de números de 16 bits usando operación de 8 bits:
Es un método largo y requiere más memoria en comparación con la operación de 16 bits.
Algoritmo:
- Cargue la parte inferior del primer número en el registro B.
- Cargue la parte inferior del segundo número en A (acumulador).
- Agregue los números y la tienda.
- Cargue la parte más alta del primer número en el registro B.
- Cargue la parte superior del segundo número en A (acumulador).
- Agregue ambos números con el acarreo de los bytes inferiores (si los hay) y guárdelos en la siguiente ubicación.
Programa:
DIRECCIÓN DE MEMORIA | MNEMOTÉCNICA | COMENTARIOS |
---|---|---|
2000 | LDA 2050 | ← 2050 |
2003 | MOV B, A | B ← A |
2004 | LDA 2052 | ← 2052 |
2007 | AÑADIR B | A ← A+B |
2008 | STA 3050 | A → 3050 |
200B | LDA 2051 | ← 2051 |
200E | MOV B, A | B ← A |
200F | LDA 2053 | ← 2053 |
2012 | ADC B | A ← A+B+CY |
2013 | STA 3051 | A → 3051 |
2016 | HLT | Detiene la ejecución |
Explicación:
- LDA 2050 almacena el valor en 2050 en A (acumulador).
- MOV B, A almacena el valor de A en el registro B.
- LDA 2052 almacena el valor en 2052 en A.
- ADD B agrega los contenidos de B y A y los almacena en A.
- STA 3050 almacena el resultado en la ubicación de memoria 3050.
- LDA 2051 almacena el valor en 2051 en A.
- MOV B, A almacena el valor de A en el registro B.
- LDA 2053 almacena el valor en 2053 en A.
- El ADC B suma el contenido de B, A, y lleva desde la suma de bits inferior y lo almacena en A.
- STA 3051 almacena el resultado en la ubicación de memoria 3051.
- HLT detiene la ejecución.
2. Adición de números de 16 bits usando una operación de 16 bits:
Es un método muy corto y también se requiere menos memoria en comparación con las operaciones de 8 bits.
Algoritmo:
- Cargue los bits inferior y superior del primer número a la vez.
- Copie el primer número a otro par registrado.
- Cargue los bits inferior y superior del segundo número a la vez.
- Sume ambos pares de registros y almacene el resultado en una ubicación de memoria.
Programa:
DIRECCIÓN DE MEMORIA | MNEMOTÉCNICA | COMENTARIOS |
---|---|---|
2000 | LHLD 2050 | NS ← 2050 |
2003 | XCHG | D H & E L |
2004 | LHLD 2052 | NS ← 2052 |
2007 | PAPÁ D | H ← H+D & L ← L+E |
2008 | SHLD 3050 |
L → 3050 & H → 3051 |
200B | HLT | Detiene la ejecución |
Explicación:
- LHLD 2050 carga el valor de 2050 en el registro L y el de 2051 en el registro H (primer número)
- XCHG copia el contenido del registro H a D y del registro L a E
- LHLD 2052 carga el valor de 2052 en el registro L y el de 2053 en el registro H (segundo número)
- DAD D suma el valor de H con D y L con E y almacena el resultado en H y L
- SHLD 3050 almacena el resultado en la ubicación de memoria 3050
- HLT detiene la ejecución