Pascal/Turbo Pascal - bios otra ves

 
Vista:

bios otra ves

Publicado por MARTIN (51 intervenciones) el 26/01/2002 02:21:37
queria saver bien los parametros que le tengo que pasar a la funcion "intr" para interrupciones , ya tengo las lista del bios , pero que el paso a la funcion?????? , realmente tengo curiosidad sobre el tema bios , gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:bios otra ves

Publicado por Diego Romero (282 intervenciones) el 27/01/2002 01:02:44
Son dos parametros, respectivamente, el número de interrupción y el estado de los registros del procesador que a su vez debes modificar antes de llamar a intr para invocar alguno de los servicios de cada intr.
El estado de los registros está definido en un ...registro... que es de tipo registers.
Por ejemplo (extraido de la ayuda de TP).
Para obtener la fecha del sistema se usa la interrupción $21, servicio $2a en el registro ax
Entonces.
uses Dos;

var
date, year, month, day: string;
regs: Registers; { esta es la estructura que encapsula los registros del procesador }

begin
regs.ah := $2a; { se carga en el registro AX el valor hexa2a }
with regs do
intr($21,regs); { llama a la interrupción hexa 21 e invoca su servicio 2a como previamente especificamos }
with regs do
begin
str(cx ,year); { la interrupción devuelve el resultado en los registros CX, DH y DL }
str(dh ,month);
str(dl,day);
end;
date := month+'/'+day+'/'+year;
writeln('Today''s date is ', date);
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:bios otra ves

Publicado por MARTIN (51 intervenciones) el 27/01/2002 18:36:47
y el "str" que es? y siempre se le da al registro alto el valor $2a? , donde puedo conseguir por ejemplo , las interrupciones del la fecha em das bvos , y como se que le tengo que dar al registro por ejemplo $2a , osea con la interrupcion no me lacabnsa para sacar la fecha , tego qued ar a un registro otra posicion , que es el offset?? a ver si me explicas gracias de ante mano!! saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:bios otra ves

Publicado por Diego Romero (282 intervenciones) el 28/01/2002 07:29:52
Mas que ayuda sobre Pascal me parece que necesitas aprender Assembler pero bueh, aquí vamos.
Str es un procedimiento de Pascal que convierte un tipo entero tal como byte, integer o longint a su representación string.
Existe la Ralph Brown List (busca asi en google.com) que es una excelente compilación de todas las interrupciones del DOS y la BIOS bastante bien explicadas y ordenadas (aunque no es especifico de ningún lenguaje).
Cada interrupción, que es lo que se ejecuta con el procedimiento Intr() no hace mas que llamar a un servicio del DOS o de la BIOS dependiendo del número de interrupción y los parametros que se le pasan a esa interrupción determinan qué servicio se está invocando, para mi ejemplo la Intrrupción es la $21 y el servicios es el $2a, la intrrupción devuelve el resultado en distintos registros, como ves en mi ejemplo los resultados estan en CX el año a cuatro cifras, en DH (que es la parte alta del registro DX) el mes a dos cifras y en DL (parte baja del registro DX) el día. En pascal un regitro completo es un Integer, cada parte del registro es un Byte se allí que luego de retornar de la interupción es necesario convertir esos valores a String (es por conveniencia mas que por obligación).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:bios otra ves

Publicado por MARTIN (51 intervenciones) el 28/01/2002 16:34:44
gracias de antemano , yo baje una lista con un bisualisador y todo , pero no tiene los servicios de las interrupciones , esas estan en la lista que em decis??? la lista que baje tb es de ralph brown , o tengo que aprender assembler para saber sobre los servicios??? gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:bios otra ves

Publicado por MARTIN (51 intervenciones) el 28/01/2002 16:35:01
gracias de antemano , yo baje una lista con un visualisador y todo , pero no tiene los servicios de las interrupciones , esas estan en la lista que em decis??? la lista que baje tb es de ralph brown , o tengo que aprender assembler para saber sobre los servicios??? gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:bios otra ves

Publicado por Diego Romero (282 intervenciones) el 29/01/2002 05:45:00
Pues si tenemos en cuenta que hay unas 100 interrupciones y en promedio cada una tiene unos 4 servicios y todas ellas actuan de diferente y particular manera es mejor tener un texto que las agrupe todas lo mejor posible, de eso se trata la Ralph Brown List.
Aunque no es impresindible es recomendable saber un poco de Assembler si vas a trabajar con interrupciones, al menos saber algo de la arquitectura de los procesadores X86.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:bios otra ves

Publicado por MARTIN (51 intervenciones) el 29/01/2002 16:54:24
gracias , ya me pongo aver que hay , gracias otra ves chauuuu saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar