|
Inicio |
Buscar |
Mapa |
Salir |
|
Multiplica dos números almacenados en memoria y obtiene su resultado teniendo en cuenta que se puede desbordar. Es decir, el resultado puede ocupar dos posiciones de memoria. Los números a multiplicar están en las posiciones F000H y F001H y el resultado debe quedar en F002H. MVI 00 D ;nicializamos D (contendrá bits menos significativos del resultado del producto) MVI 00 E ; inicializamos E (bits de mayor peso del resultado) LDA F000 MOV A B ;B = (F000). Cargamos en B el multiplicando LDA F001 MOV A C ; C = (F001). Cargamos en C el multiplicador SUMA CPI 00 BEQ TERMINA ; si el multiplicador C ha llegado a O, se acaba MOV D A ADD B MOV A D ; D = D + B (resultado = resultado + multiplicando) BC DESBOR JMP FIN_DE DESBOR INR E ;.como ha habido desborde, E = E + 1 FIN_DE MOV C A SUI 01 MOV A C ; decrementamos multiplicador: C = C - 1 JMP SUMA TERMINA MOV D A ; decrementamos multiplicador: C = C - 1 STA F002 ; (F002) = D MOV E A STA F003 ; (F003) = E
Se utilizan las instrucciones STA o LDA cuatro veces a lo largo del programa, y utilizan como operando cuatro direcciones de memoria distintas, por lo que se van a declara cuatro variables. Si se quiere también se pueden utilizar las direcciones directamente en vez de variables. En este caso se utilizarán variables que se definiran en el campo Variables. var1 = f000 var2 = f001 var3 = f002 var4 = f003
Ventana donde se escribe el código fuente ensamblador
Se supone que se quiere cargar el programa a partir de la dirección A000H.
Después de compilar, el código resultado es el siguiente.Se puede ver que a pesar de no haber utilizado la instrucción FIN, el Traduct 2000 la ha incluido automáticamente.
Ahora solo queda copiarlo (Ctrl + C) y pegarlo (Ctrl + V) en la ventana Cargar del simulador de la Máquina Plus.
|
||||||||||
| EJEMPLO 2 | ||||||||||
|
Inicializa con 0 las primeras 10H posiciones de la memoria a partir de la posición F000H.
MVI F0 D ;inicializamos D y E con la dirección del primer elemento del vector :F000 MVI 00 E MVI 00 A SEGUIR STAX ;(D-E) = A. El elemento del vector toma el valor 00 INR E MOV E A CPI 10 BEQ TERMINA MVI 00 A JMP SEGUIR TERMINA FIN
Primero escribimos el programa en el Traduct 2000. Suponemos que se quiere cargar a partir de la dirección 0000H. Como no se utilizan las instrucciones STA y LDA, no vamos a declarar variables, por lo que solo se utiliza el campo Código:
Se pulsa el botón traducir y se obtiene el siguiente código:
Ahora solo queda copiarlo (Ctrl + C) y pegarlo (Ctrl + V) en la ventana Cargar del simulador de la Máquina Plus.
|
||||||||||
ESIDE 1999 Última modificación: Noviembre 1999 |