Professional Documents
Culture Documents
de Macuspana
Carrera:
Ing. Sistemas Computacionales
Docente:
Lic. Javier Oyosa Pérez
Alumno:
Francisco Javier García Gerónimo
Materia:
Lenguaje Ensamblador
Semestre: 5to
Turno: Vespertino
Tema:
Unidad 4
Programación Hibrida
30 de septiembre de 2010
Programación Hibrida
Pascal y ensamblador
Procedure Limpia_Pantalla;
Assembler;
Asm
Mov AX,0600h
Mov BH,18h
Mov CX,0000h
Mov DX,184Fh
Int 10h
End;
El procedimiento del listado 23 utiliza la función 06h de la Int 10h del
BIOS para limpiar la pantalla, este procedimiento es análogo al
procedimiento Clr Scr de la unidad CRT de Turbo Pascal.
Por otro lado, Asm nos permite incluir bloques de instrucciones en lenguaje
ensamblador en cualquier parte del programa sin necesidad de escribir
procedimientos completos en ensamblador.
Program hibrido;
Uses Crt;
Var
N1,N2,Res : integer;
Begin
Readln(N1);
Readln(N2);
Asm
Mov AX,N1;
Add AX,N2;
Mov Res,AX
End;
End.
Program Hibrido2;
Uses Crt;
Var
Car: Char;
i,j : integer;
Assembler;
Asm
Mov AX,0600h
Mov Bh,17h
Mov CX,0000h
Mov DX,184Fh
Int 10h
End;
Assembler;
Asm
Mov Ah,02h
Mov Dl,C
Int 21h
End;
Assembler;
Asm
Mov Ah,02h
Mov Bh,00h
Mov Dh,Y
Mov Dl,X
Int 10h
End;
Begin
Limpia_Pantalla;
Repeat
Limpia_Pantalla;
Cursor_XY(0,0);
Car:=Read Key;
Imprime_Car(Car);
Limpia_Pantalla;
Begin
For i:=0 to 24 do
For j:=0 to 79 do
Begin
Cursor_XY(j,i);
Imprime_Car(Car);
End;
Cursor_XY(30,24);
Readln;
End.
4. 1Directivas Para Compilacion Hibrida
programación híbrida
Pascal y ensamblador
Procedure Limpia_Pantalla;
Assembler;
Asm
Mov AX,0600h
Mov BH,18h
Mov CX,0000h
Mov DX,184Fh
Int 10h
End;
El procedimiento del listado 23 utiliza la función 06h de la Int 10h del
BIOS para limpiar la pantalla, este procedimiento es análogo al
procedimiento Clr Scr de la unidad CRT de Turbo Pascal.
Por otro lado, Asm nos permite incluir bloques de instrucciones en lenguaje
ensamblador en cualquier parte del programa sin necesidad de escribir
procedimientos completos en ensamblador.
Uses Crt;
Var
N1,N2,Res : integer;
Begin
Readln(N1);
Readln(N2);
Asm
Mov AX,N1;
Add AX,N2;
Mov Res,AX
End;
Readln;
End.
Program Hibrido2;
Uses Crt;
Var
Car: Char;
i,j : integer;
Procedure Limpia_Pantalla;
Assembler;
Asm
Mov AX,0600h
Mov Bh,17h
Mov CX,0000h
Mov DX,184Fh
Int 10h
End;
Assembler;
Asm
Mov Ah,02h
Mov Dl,C
Int 21h
End;
Assembler;
Asm
Mov Ah,02h
Mov Bh,00h
Mov Dh,Y
Mov Dl,X
Int 10h
End;
Begin
Limpia_Pantalla;
Repeat
Limpia_Pantalla;
Cursor_XY(0,0);
Car:=Read Key;
Imprime_Car(Car);
Limpia_Pantalla;
Begin
For i:=0 to 24 do
For j:=0 to 79 do
1- OPERADORES ARITMeTICOS
Pueden emplearse libremente (+), (-), (*) y (/) -en este ultimo caso la
division es siempre entera-. Es valida, por ejemplo, la siguiente linea en
ensamblador (que se apoya en la directiva DW, que se vera mas adelante,
para reservar memoria para una palabra de 16 bits):
dato DW 12*(numero+65)/7
Tambien se admiten los operadores MOD (resto de la division) y SHL/SHR
(desplazar a la izquierda/derecha cierto numero de bits). Obviamente, el
ensamblador no codifica las instrucciones de desplazamiento (al aplicarse
sobre datos constantes el resultado se calcula en tiempo de ensamblaje):
2. - OPERADORES LoGICOS.
Pueden ser el AND, OR, XOR y NOT. Realizan las operaciones logicas en
las expresiones. Ej.:
3. - OPERADORES RELACIONALES.
tambien es valido:
MOV AX,OFFSET DS:variable
kilos DW 76
5- OPERADORES DE ATRIBUTOS.
Trabajando con varios segmentos, PTR puede redefinir una etiqueta NEAR
de uno de ellos para convertirla en FAR desde el otro, con objeto de poder
llamarla.
MOV AL,ES:variable
MOV AL,[0]
Para solucionarlo hay que indicar en que segmento este el dato (incluso
aunque este sea DS):
MOV AL,DS:[0]
MOV AL,midato
Por lo general no es muy frecuente la necesidad de indicar explicitamente
el segmento: al acceder a una variable el ensamblador mira en que
segmento este declarada (vease la directiva SEGMENT) y segun como
esten asignados los ASSUME, pondre o no el prefijo adecuado segun sea
conveniente. Es responsabilidad exclusiva del programador inicializar los
registros de segmento al principio de los procedimientos para que el
ASSUME no se quede en tinta mojada… si se emplean con bastante
frecuencia, sin embargo, los prefijos CS en las rutinas que gestionan
interrupciones (ya que CS es el unico registro de segmento que apunta en
principio a las mismas, hasta que se cargue DS u otro).
frase DB “simpatico”