Sistemas

Solo disponible en BuenasTareas
  • Páginas : 5 (1197 palabras )
  • Descarga(s) : 0
  • Publicado : 29 de noviembre de 2009
Leer documento completo
Vista previa del texto
UNIDAD IV. PROGRAMACIÓN HÍBRIDA

4.1 Directivas para compilación híbrida: La compilación hibrida es utilizada en lo que es conocida como programación hibrida (válgase la redundancia). La programación hibrida es utilizada en los casos en donde el código en ensamblador dificulta la estructuración del programa. La programación híbrida proporciona un mecanismo por medio del cual podemos aprovecharlas ventajas del lenguaje ensamblador y los lenguajes de alto nivel, todo esto con el fin escribir programas más rápidos y eficientes. Ejemplo: la red es el siguiente donde utilizamos código en ensamblador y código pascal. El siguiente código sirve para limpiar pantalla, está escrito en ensamblador dentro de una función en pascal, lo que es lo mismo a la función ClrScr en pascal. ProcedureLimpia_Pantalla; Assembler; Asm Mov AX, 0600h Mov BH, 18h Mov CX, 0000h Mov DX, 184Fh Int 10h End;

En fin podemos mezclar el código ensamblador con el código de cualquier otro lenguaje que admita este procedimiento. En pascal antes de escribir el código en ensamblador ay que poner Asm y al final de nuestro código End.[1] Funciones en Ensamblador: Bloques en Ensamblador:

Operadores: OperadoresAritméticos: Pueden emplearse libremente (+), (-), (*) y (/). En este último caso la división es siempre entera. También se admiten los operadores MOD (resto de la división) y SHL/SHR (desplazar a la izquierda/derecha cierto número de bits). Operadores Lógicos: Pueden ser el AND, OR, XOR y NOT. Realizan las operaciones lógicas en las expresiones Operadores relacionales: Devuelven condiciones de cierto(0FFFFh o 0FFh) o falso (0) evaluando una expresión. Pueden ser: EQ (igual), NE (no igual), LT (menor que), GT (mayor que), LE (menor o igual que), GE (mayor o igual que) Operadores de retorno de valores: Operador SEG: devuelve el valor del segmento de la variable o etiqueta, silo se puede emplear en programas de tipo EXE: MOV AX,SEG tabla_datos Operador OFFSET: devuelve el desplazamiento de lavariable o etiqueta en su segmento: MOV AX,OFFSET variable

Si se desea obtener el offset de una variable respecto al grupo (directiva GROUP) de segmentos en que esta definida y no respecto al segmento concreto en que está definida: MOV AX,OFFSET nombre_grupo: variable

Operador .TYPE: Devuelve el modo de la expresión indicada en un byte. El bit 0 indica modo «relativo al código» y el 1 modo«relativo a datos», si ambos bits están inactivos significa modo absoluto. El bit 5 indica si la expresión es local (0 si está definida externamente o indefinida); el bit 7 indica si la expresión contiene una referencia externa. El TASM utiliza

también el bit 3 para indicar algo que desconozco. Este operador es útil sobre todo en las macros para determinar el tipo de los parámetros: info .TYPEvariable

Operador TYPE: devuelve el tamaño (bytes) de la variable indicada. No valido en variables DUP: kilos MOV DW 76 ;

AX,TYPE kilos AX = 2

Tratándose de etiquetas -en lugar de variables- indica si es lejana o FAR (0FFFEh) o cercana o NEAR (0FFFFh). Operadores SIZE y LENGTH: devuelven el tamaño (en bytes) o el no de elementos, respectivamente, de la variable indicada (definidaobligatoriamente con DUP): matrix MOV MOV DW 100 DUP (12345) AX,SIZE matriz ; AX = 200 BX,LENGTH matriz ; BX = 100

Operadores MASK y WIDTH: Informan de los campos de un registro de bits (base RECORD). Operadores de Atributos: Operador PTR: redefine el atributo de tipo (BYTE, WORD, DWORD, QWORD, TBYTE) o el de distancia (NEAR o FAR) de un operando de memoria. Por ejemplo, si se tiene una tabla definida dela siguiente manera: Tabla DW 10 DUP (0) 10 palabras a 0 ;

Para colocar en AL el primer byte de la misma, la instrucción MOV AL, tabla es incorrecta, ya que tabla (una

cadena 10 palabras) no cabe en el registro AL. Lo que desea el programador debe indicirselo en este caso explícitamente al ensamblador de la siguiente manera: MOV AL,BYTE PTR tabla

Trabajando con varios segmentos, PTR...
tracking img