TINY

(x-y)/3

(4-1)/3

read x;
read y;
m:=(x-y)/3;
write m
  0:     LD  6,0(0) 
  1:     ST  0,0(0) 
  2:     IN  0,0,0 
  3:     ST  0,0(5) 
  4:     IN  0,0,0 
  5:     ST  0,1(5) 
  6:     LD  0,0(5) 
  7:     ST  0,0(6) 
  8:     LD  0,1(5) 
  9:     LD  1,0(6) 
 10:    SUB  0,1,0 
 11:     ST  0,0(6) 
 12:    LDC  0,3(0) 
 13:     LD  1,0(6) 
 14:    DIV  0,1,0 
 15:     ST  0,2(5) 
 16:     LD  0,2(5) 
 17:    OUT  0,0,0 
 18:   HALT  0,0,0 
reg[0] 0
reg[1] 0
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 0
reg[7] 0
dMem[0] 1023
dMem[1] 0
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 0

INICIANDO

reg[0] 0
reg[1] 0
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 1023
dMem[1] 0
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 0

0:  LD  6,0(0)

     LD  r,d(s)    reg[r] = dMem[d+reg[s]] (carga indirecta)

     LD  6,0(0)   reg[6] = dMem[0+reg[0]]

reg[0] 0
reg[1] 0
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 0
dMem[1] 0
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 0

1:  ST  0,0(0)

     ST  r,d(s)    dMem[d+reg[s]] = reg[r] (almacena)

     ST  0,0(0)   dMem[0+reg[0]] = reg[0]

reg[0] 4
reg[1] 0
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 0
dMem[1] 0
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 0

2:  IN  0,0,0

     IN  r,s,t    reg[r] <-- Lectura del valor entero desde teclado

     IN  0,0,0   reg[r] = 4

reg[0] 4
reg[1] 0
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 0
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 0

3:  ST  0,0(5)

     ST  r,d(s)    dMem[d+reg[s]] = reg[r] (almacena)
     ST  0,0(5)   dMem[0+reg[5]] = reg[0]

reg[0] 1
reg[1] 0
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 0
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 0

4:  IN  0,0,0 

     IN  r,s,t    reg[r] <-- Lectura del valor entero desde teclado
     IN  0,0,0   reg[r] = 1

reg[0] 1
reg[1] 0
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 1
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 0

5:     ST  0,1(5) 

     ST  r,d(s)    dMem[d+reg[s]] = reg[r] (almacena)
     ST  0,1(5)   dMem[1+reg[5]] = reg[0]

reg[0] 4
reg[1] 0
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 1
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 0

6:  LD  0,0(5)

     LD  r,d(s)    reg[r] = dMem[d+reg[s]] (carga indirecta)
     LD  0,0(5)   reg[0] = dMem[0+reg[5]]

reg[0] 4
reg[1] 0
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 1
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 4

7:  ST  0,0(6) 

     ST  r,d(s)    dMem[d+reg[s]] = reg[r] (almacena)
     ST  0,0(6)   dMem[0+reg[6]] = reg[0]

reg[0] 1
reg[1] 0
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 1
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 4

8:  LD  0,1(5)

     LD  r,d(s)    reg[r] = dMem[d+reg[s]] (carga indirecta)
     LD  0,1(5)   reg[0] = dMem[1+reg[5]]

reg[0] 1
reg[1] 4
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 1
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 4

9:  LD  1,0(6)

     LD  r,d(s)    reg[r] = dMem[d+reg[s]] (carga indirecta)
     LD  1,0(6)   reg[1] = dMem[0+reg[6]]

reg[0] 3
reg[1] 4
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 1
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 4

10:  SUB  0,1,0

       SUB  r,s,t    reg[r] = reg[s] - reg[t]

       SUB  0,1,0    reg[0] = reg[1] - reg[0]

reg[0] 3
reg[1] 4
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 1
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 3

11:  ST  0,0(6)

       ST  r,d(s)    dMem[d+reg[s]] = reg[r] (almacena)

       ST  0,0(6)   dMem[0+reg[6]] = reg[0]

reg[0] 3
reg[1] 4
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 1
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 3

12:  LDC  0,3(0)

       LDC  r,d(s)    reg[r] = d (carga constante directamente en r)

       LDC  0,3(0)    reg[0] = 3

reg[0] 3
reg[1] 3
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 1
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 3

13:  LD  1,0(6)

       LD  r,d(s)    reg[r] = dMem[d+reg[s]] (carga indirecta)
       LD  1,0(6)   reg[1] = dMem[0+reg[6]]

reg[0] 1
reg[1] 3
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 1
dMem[2] 0
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 3

14:  DIV  0,1,0

       SUB  r,s,t    reg[r] = reg[s] / reg[t]

       SUB  0,1,0    reg[0] = reg[1] / reg[0]

reg[0] 1
reg[1] 3
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 1
dMem[2] 1
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 3

15:  ST  0,2(5)

       ST  r,d(s)    dMem[d+reg[s]] = reg[r] (almacena)
       ST  0,2(5)   dMem[2+reg[5]] = reg[0]

reg[0] 1
reg[1] 3
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 1
dMem[2] 1
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 3

16:  LD  0,2(5)

       LD  r,d(s)    reg[r] = dMem[d+reg[s]] (carga indirecta)

       LD  0,2(5)   reg[0] = dMem[2+reg[5]]

reg[0] 1
reg[1] 3
reg[2] 0
reg[3] 0
reg[4] 0
reg[5] 0
reg[6] 1023
reg[7] 0
dMem[0] 4
dMem[1] 1
dMem[2] 1
dMem[3] 0
dMem[4] 0
dMem[5] 0
.. ..
.. ..
dMem[1023] 3

17:  OUT  0,0,0

       LD  r,s(t)    reg[r] --> (La salida estándar)

       LD  0,0(0)  Se displaya el valor de reg[r]

18:   HALT  0,0,0 

       Se detiene la ejecución y finaliza el programa

FIN

TINY

By Nicanor Quispe Cuadros