Instrucciones de Control

Repeat - until

Se pueden expresar de la forma:

et1: instrucciones
        ....
        ....
    if( a > b) then
        GOTO et2
    else
        GOTO et1
et2:
        .....

Ejemplo:

n = 2;
c = 0;

Repeat 

    r1 = c + 3;
    r2 = r1 * n;
    n = n * 1;

until n > 11 

Tripleta 

(1)  (=,n,2)
(2)  (=,c,0)
(3)  (=,r1,(4))
(4)  (+,c,3)
(5)  (=,r2,(6))
(6)  (*,r1,n)
(7)  (=,n,(8))
(8)  (+,n,1)
(9)  (>,n,11)
(10) (jump false,(9),(3))
(11) ....

Cuadrupla

(1)  (=,n,,2)
(2)  (=,c,,0)
(3)  (+,c,3,t1)
(4)  (=,t1, ,r1)
(5)  (*,r1,n,t2)
(6)  (=,t2, ,r2)
(7)  (+,n,1,t3)
(8)  (=,t3, ,n)
(9)  (>,n,11,cmp)
(10) (jump false,cmp, ,(3))
(11)  ....

Código P

lda n
ldc 2
sto
pop
lda c
ldc 0
sto
pop

lab et1

lda r1
lod c
ldc 3
adi
sto
pop

lda r2
lod r1
lod n
mpi
sto
pop

lda n
lod n
ldc i
adi
sto
pop

lod n>11
fjp et1

Instrucciones de Control

Switch

E J EMPLO

e=1;
switch (e){
      case 1:
           x=y+z;
      break;
      case 2:
           x=y*z;
      break;
      default:
           x=0;
      break;
}

TRIPLETA

e=1;
switch (e){
      case 1:
           x=y+z;
      break;
      case 2:
           x=y*z;
      break;
      default:
           x=0;
      break;
}
1) = , e , 1
2) == , e , 1
3) salta si no es igual, (2), (7)
4) + , y , z
5) =, x , (4)
6) salta,  , (13)
7) ==, e, 2
8) salta si no es igual ,  , (12)
9) * ,  y , z
10) = , x , (9)
11) salta,  , (13)
12) = , x , 0
13) ...

CUADRUPLA

e=1;
switch (e){
      case 1:
           x=y+z;
      break;
      case 2:
           x=y*z;
      break;
      default:
           x=0;
      break;
}
1) = , 1 ,   , e
2) == , e , 1 , t1
3) salta si falso, t1 , , (7)
4) + , y , z , t2
5) = , t2 , , x
6) salta, , , (13)
7) == , e , 2 , t3
8) salta si falso , t3 , , (12)
9) * , y , z , t4
10) = , t4 , ,x
11) salta,  , , (13)
12) = , 0 ,  , x
13) ...
lda e
ldc 1
sto
pop

lod e==1
fjp et2
lda x
lod y
lod z
adi
sto
pop
jmp et4

et2
lod e==2
fjp et3
lda x
lod y
lod z
mpi
sto
pop
jmp et4

et3 
lda x
ldc 0

et4 
...

CÓDIGO

 

P

e=1;
switch (e){
      case 1:
           x=y+z;
      break;
      case 2:
           x=y*z;
      break;
      default:
           x=0;
      break;
}
Made with Slides.com