|
Tipo de datos |
�ndice |
|
Es una caracter�stica principalmente vinculada al tama�o, y que es obligatorio asignar a cada variable que se declara o crea (ver mas abajo).
• Bit, bool o DIG • Entero o INT o Word o int_16 (16bit) • Entero largo o LNG o int_32 (32bit) • Real o SNG (punto flotante)
|<----------------------- entero 32bit ------------------------>| | parte alta | parte baja | | | | | |<------ entero 16bit --------->|<------ entero 16bit --------->| | | | |_______________________________|_______________________________| | |B| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ¯¯¯\¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ | \___ bit | | | 31 16 15 0 | |<------- una direcci�n ------->|<------- una direcci�n ------->| de memoria de memoria
El tipo común es el Entero de 16bit, y es posible hacer referencia a cada uno de sus bits. Ejemplo:
El entero largo (LNG) y el real (SNG) no son comunes y están reservados para las funciones aritméticas y comparaciones, por lo que no se puede usar algo como i0.25. Las operaciones aritm�ticas, las comparaciones, INC, DEC, LD y ST pueden usar estos dos tipos. Para esto es necesario usar variables declaradas. Esto significa que si se hace un LD v0 lo hará en 16bit, pero si se declara una variable como entero largo o real en la posición de v0 (ocupará v0 y v1) la operación se hará correctamente (ver instrucci�n LD). Constantes (valores num�ricos) Los n�meros son tomados como constantes, y su tipo (entero, largo o real) ser� determinado por la forma que est� escrito. Un
LD 2 cargar� el acumulador con un entero de valor 2, un
LD 80000 cargar� el acumulador con un largo de valor ochenta mil, y un
LD 1.23 cargar� el acumulador con un real uno coma veintitr�s.
Los enteros y enteros largos pueden tambi�n expresarse en binario, octal y hexadecimal:
En la imagen est�n los tipos de datos que se pueden declarar. N�tese que el salto de la variable llamada Total a Prop es de 2 posiciones. Esto es debido a su tama�o (el doble), y as� se evita que se superpongan. aux_1 y aux_2 est�n en la misma direcci�n (o variable), pero ocupan diferentes bits. Uniones
Aqu� las variables est�n superpuestas. Es lo que en C se llama uni�n. Los nombres que se le han asignado coinciden con el tipo de superposici�n. De esta forma, lo que le acontece a una se refleja en la otra, ya que es la misma cosa con varios nombres. Por ejemplo, en CP127 y CP128 CntFst es de 16 bits. Cuando la cuenta pase de 32767 a 32768 se leer� -32768 (es porque todas las variables son con signo). Para leerlo correctamente se lo convierte a 32 bit mediante una uni�n, copiando CntFst a Parte_baja, cero a Parte_alta, y finalmente leyendo Variable_Larga: MOVE CntFst, Parte_baja MOVE 0, Parte_alta LD Variable_Larga Un largo equivale a 2 enteros adyacentes. Para pasar datos de uno a otro utilice BLKMOVE. A partir de determinadas versiones puede usar MOVE para hacer conversiones entre 16 y 32 bit. |