Programacion hibrida en free pascal?
Publicado por Franco Sanguedolce (32 intervenciones) el 15/11/2013 07:24:57
buenas amigos del foro, he aqui de nuevo con una duda...
estoy estudiando programacion en ASSEMBLER, lo llevo bastante bien, el tema es que, cuando quiero añadir codigo en ensamblador a algun programa en pascal solo consigo usar algunas funciones...
explico mejor...
usando la directiva {$asmmode intel} he conseguido compilar mis aplicaciones en pascal, pero cuando quiero hacer llamadas a interrupciones, ya sean de la BIOS o de DOS no consigo que el programa corra...
un ejemplo de esto es un procedimiento para cambiar a modo grafico;
con esto deberia cambiar al modo grafico que le indico, compila bien, pero cuando lo corro, el programa se interrumpe con exitcode = 216;
probe usando las fnciones de la unidad DOS con una variable de tipo REGISTERS de la siguiente manera:
en ambos casos el programa compila bien pero cuando lo corro se interumpe la ejecucion y me sale exitcode = 216, esto me pasa con varias rutinas que probe en ASM, segun lei por ahi, con FREE PASCAL no se pueden usar las interrupciones de Ms-Dos, aun asi, las interrupciones de la BIOS deberia poderlas ejecutar, pero el programa se interrumpe con ese codigo de error,
alguna solucion??? se los agradeceria.
estoy estudiando programacion en ASSEMBLER, lo llevo bastante bien, el tema es que, cuando quiero añadir codigo en ensamblador a algun programa en pascal solo consigo usar algunas funciones...
explico mejor...
usando la directiva {$asmmode intel} he conseguido compilar mis aplicaciones en pascal, pero cuando quiero hacer llamadas a interrupciones, ya sean de la BIOS o de DOS no consigo que el programa corra...
un ejemplo de esto es un procedimiento para cambiar a modo grafico;
1
2
3
4
5
6
procedure m640x480x16; assembler;
asm
mov ah,00h {Funcion que cambia el modo de video de la INT 10h}
mov al,12h {Especifico el modo de video 640x480x16}
int 10h {Llamo a la interrupcion para cambiar al modo de video}
end;
con esto deberia cambiar al modo grafico que le indico, compila bien, pero cuando lo corro, el programa se interrumpe con exitcode = 216;
probe usando las fnciones de la unidad DOS con una variable de tipo REGISTERS de la siguiente manera:
1
2
3
4
5
6
procedure m640x480x16;
begin
regs.ah:=$00; {Funcion de la INT 10h}
regs.al:=$12; {Modo de Video 640x480x16}
intr($10,regs);
end;
en ambos casos el programa compila bien pero cuando lo corro se interumpe la ejecucion y me sale exitcode = 216, esto me pasa con varias rutinas que probe en ASM, segun lei por ahi, con FREE PASCAL no se pueden usar las interrupciones de Ms-Dos, aun asi, las interrupciones de la BIOS deberia poderlas ejecutar, pero el programa se interrumpe con ese codigo de error,
alguna solucion??? se los agradeceria.
Valora esta pregunta


0