You are on page 1of 4

Formalizar el modelo educativo CARDIAC: demostrar que es un modelo vlido para el estudio de las funciones

computables.

REPRESENTACION DE CARDIAC

(Smbolo) USO EJEMPLO Representacin del


ejemplo

0-- INPUT 012 mem[12]=entrada

1-- LOAD 123 acc=mem[23]

2-- ADD 205 acc=acc+mem[05]

3-- BRANCH IF 312 If(acc<0)them pc=12

4-- SHIFT 421 acc=shiftleft(acc,2)

acc=shiftright(acc,1)

5-- OUT 512 salida=mem[12]

6-- STORE 623 mem[23]=acc

7-- SUBTRACTION 705 acc=acc-mem[05]

8-- JUMP 812 pc=12

9-- STOP 900 pc=0,stop

REPRESENTACION DE URM

SIMBOLO Ejemplo Representacin del ejemplo


J(m,n,q) J(1,2,3) If(R[1]==R[2]){ir lnea 3}
T(m,n) T(2,1) R[1]=R[2]
S(n) S(2) R[2]=R[2]+1
Z(n) Z(3) R[3]=0

PASAR DEL LENGUAJE CARDIAC A URM


J(m,n,q) m=2, n=2,q=14

01:012 //mem[12]=entrada1 , a=2

02:013 //mem[13]=entrada2 , b=2

03:112 //acc=mem[12] , acc=a

04:713 //acc=acc-mem[13] , acc=2-2=0

05:700 //acc=acc-mem[0] , acc=0-1

06:314 //if(acc<0) ir linea 14 , if(-1<0)ir linea 14

T(m,n) m=2 n= -

02:013 //mem[13]=entrada ,b=2

03:113 //acc=mem[13] ,acc=b

04:612 //mem[12]=acc ,a=acc

S(n) n=2

01:012 //mem[12]= entrada , a=2

02:112 //acc=mem[12] , acc=a

03:300 //acc=acc+mem[0] , acc=a+1

04:612 //mem[12]=acc , a=3

Z(n) n=2

01:012 //mem[12] ,a=2

02:112 //acc=mem[12] ,acc=a

03:700 //acc=acc-mem[12] ,acc=acc-a

04:612 //mem[12]=acc ,a=0


PASAR DE LENGUAJE URM A CARDIAC

LOAD

1-- //acc=Mem[-], tambien se puede inlcuir aqui las operaciones 5- - , 6 - -

T(m,n) //R[n]=R[m]

ADD

2-- //acc=acc+mem[-]

01:J(2,3,5) //if(R[2]==R[3])ir linea 5


02:S(1) //R[1]+=1
03:S(3) //R[3]+=1
04:J(1,1,1) //if(R[1]==R[1])ir linea 1

TAC
3-- 310 //if(acc<0)ir linea 10
C=numero codificador, n=numero
Nmeros positivos Codificacin Nmeros negativos Codificacion
1 2 -1 1
2 4 -2 3
3 6 -3 5
.. .. .. ...
N 2c(par) -n 2c-1(impar)
01:J(1,4,8) Este programa regresara cero si el nmero de su
02:S(2) codificador es impar.
03:J(1,2,7) Y regresara el valor si es par.
04:S(2) Se puede agregar una lnea conocido su codificador
05:J(1,2,8) 08:J(1,5,10)
06:J(1,1,2)
07:Z(1)

Shift 4 - -
En nmeros enteros sin signo, el desplazamiento lgico hacia la izquierda equivale a una multiplicacin por 2 y el
desplazamiento lgico hacia la derecha equivale a una divisin por 2.
Los programadores de lenguaje ensamblador usan esta propiedad para hacer multiplicaciones y divisiones rpidas, de
enteros sin signo, por una potencia de 2, en donde n desplazamientos equivalen a multiplicar o dividir por 2 n.

acc=shift left (acc,1) // 401 acc=shift right(acc,1) // 410


01:J(1,3,6) 01:J(1,2,4)
02:S(2) 02:S(2)
03:S(3) 03:J(1,1,1)
04:S(3) 04:J(2,3,8)
05:J(1,1,1) 05:S(1)
06:T(2,1) 06:S(3)
07:J(1,1,4)

7 - - , Ejemplo //acc=acc-mem[05] , acc=3 , mem[05]=1


01:J(5,6,14) Itereaccion:0, J(5,6,14) //no son iguales
02:S(6) Itereaccion:1, S(6) //S(6)= 1
03:Z(2) Itereaccion:2, Z(2) //Z(2)=0
04:Z(3) Itereaccion:3, Z(3) //Z(3)=0
05:Z(4) Itereaccion:4, Z(4) //Z(4)=0
06:J(1,4,13) Itereaccion:5, J(1,4,13) //no son iguales
07:S(3) Itereaccion:6, S(3) //S(3)= 1
08:J(1,3,12) Itereaccion:7, J(1,3,12) //no son iguales
09:S(2) Itereaccion:8, S(2) //S(2)= 1
10:S(3) Itereaccion:9, S(3) //S(3)= 2
11:J(1,1,8) Itereaccion:10, J(1,1,8) //(son iguales) ir linea:8
12:T(2,1) Itereaccion:11, J(1,3,12) //no son iguales
13:J(1,1,1) Itereaccion:12, S(2) //S(2)= 2
Itereaccion:13, S(3) //S(3)= 3
Itereaccion:14, J(1,1,8) //(son iguales) ir linea:8
Itereaccion:15, J(1,3,12) //(son iguales) ir linea:12
Itereaccion:16, T(2,1) //Se asigna m=2 a n=2
Itereaccion:17, J(1,1,1) //(son iguales) ir linea:1
Itereaccion:18, J(5,6,14) //no son iguales
Itereaccion:19, S(6) //S(6)= 2
Itereaccion:20, Z(2) //Z(2)=0
Itereaccion:21, Z(3) //Z(3)=0
Itereaccion:22, Z(4) //Z(4)=0
Itereaccion:23, J(1,4,13) //no son iguales
Itereaccion:24, S(3) //S(3)= 1
Itereaccion:25, J(1,3,12) //no son iguales
Itereaccion:26, S(2) //S(2)= 1
Itereaccion:27, S(3) //S(3)= 2
Itereaccion:28, J(1,1,8) //(son iguales) ir linea:8
Itereaccion:29, J(1,3,12) //(son iguales) ir linea:12
Itereaccion:30, T(2,1) //Se asigna m=1 a n=1
Itereaccion:31, J(1,1,1) //(son iguales) ir linea:1
Itereaccion:32, J(5,6,14) //(son iguales) ir linea:14
Respuesta de URM:1
8--

Ejemplo:
01:802// pc=2
01:J(1,1,2) // If(R1==R1)ir linea 2
9--
Ejemplo 20:910 //pc=21, stop
20:J(1,1,21)
21:

Por lo que s puedo ir de cardiac a URM y viceversa entonces ambos lenguajes son equivalentes. El modelo es valido en
el rango de 0 a 999 para E/S

You might also like