UD Web -- ESIDE Ir a la página inicial
Inicio
Realizar una búsqueda en la sede web
Buscar
Ver el mapa de la sede web
Mapa
Salir de la sede web
Salir
 

 

EJEMPLO 1

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.

A000

62

00

63

00

70

F0

00

40

70

F0

01

41

67

00

72

A0

1C

02

30

42

73

A0

15

74

A0

16

2F

01

66

01

41

74

A0

08

02

71

F0

02

03

71

F0

03

FF

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:

0000

62

F0

63

00

64

00

90

2F

03

67

 

10

72

00

0E

64

 

00

74

00

03

FF

 

Ahora solo queda copiarlo (Ctrl + C) y pegarlo (Ctrl + V) en la ventana Cargar del simulador de la Máquina Plus.

 

 

  *   *   *   *   *   *   *   *   *
Ir a la página inicial
Inicio
Realizar una búsqueda en la sede web
Buscar
Ver el mapa de la sede web
Mapa
Salir de la sede web
Salir

E-mail eside-web@deusto.es
ESIDE 1999
Última modificación: Noviembre 1999