EC - PEC1 de 2022-s2 PREGUNTA 2º

En el código de alto nivel M es una variable de tipo vector de 10 elementos. Cada elemento del vector es un entero de 32 bits. En el programa ensamblador el vector se encuentra almacenado a partir de la dirección simbólica M, en posiciones consecutivas (M[0], en la dirección simbólica M, el siguiente, M[1], en la dirección M+4, etc.).

El programa recorre el vector M, actulizándolo según la condición del código (posiciones M[I] i M[I+1]), al doble del valor de M[i]

 

I= 0;

DO {

IF ((M[I]>0) OR (M[I+1]<9)) M[I]= M[I]*2;

I:= I+1;

} WHILE (I<=8)

 

Rellena los espacios de la propuesta de programa ensamblador que se muestra a continuación para conseguir el resultado deseado.

 

Solución:

 

MOV R1, 0

MOV R3, M   

DO:       CMP [R3], 0

  JG   OK

CMP [R3+4], 9

  JGE   WHI

OK:       SAL  [R3] ,1

WHI:      ADD R3, 4  

ADD R1, 1

CMP R1, 8

  JGE   DO

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *