Ensamblador - APM int 15h problema

 
Vista:

APM int 15h problema

Publicado por sxp (1 intervención) el 13/07/2008 22:43:08
Hola, bueno leyendo esto particularmente
http://webpages.charter.net/danrollins/techhelp/0030.HTM
http://webpages.charter.net/danrollins/techhelp/0038.HTM
En fin, sobre APM
La cuestión es que código que hice en mi PC no funciona y por la respuesta en el registro AH=86 imagino que no está

instalado.
intenté activarlo mediante ax=5308h para luego utilizar ax=5307h pero el mismo problema.
Por lo que me gustaría que me aclaren la duda de si hay errores en el código que hice. Y si usando el DOSBOX, como menciona MSH en otro post, o VMWare si se apaga para poderlo probar en caso de que esté bien.
(estoy usando winXP) Gracias y este es el código:

pila segment para stack "stack"
dw 500 dup (?)
pila ends
datos segment
datos ends
codigo segment
assume cs:codigo,ds:datos,ss:pila
activa proc ;activa apm
mov ax,5308h
mov bx,0FFFFh
mov cx,0001h
ret
activa endp
apaga proc
mov ax,5307h
mov dx,0000h
mov bx,0001h
mov cx,0003h
int 15h
ret
endp
finaliza proc
mov ax,4C00h
int 21h
ret
finaliza endp
inicio:
mov ax,datos
mov ds,ax
call activa
call apaga
call finaliza
codigo ends
end inicio
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:APM int 15h problema

Publicado por Perceval Ciro (23 intervenciones) el 14/07/2008 07:04:20
Hola que tal, leyendo el articulo me parece que no lo estas haciendo correctamente, creo que no utilizas la funcion 15h 5302 o 03 que seria para Windows XP, es decir para tipo de sistema operativo... Tampoco tendria que correrte con los otros programas mencionados, bah!, no harian lo que esperas porque en ese caso tendrias, siempre lo digo creyendo, usado la 5302, que es el pedido, y un poco mas de informacion para la administracion de energia, manejado junto a la BIOS.
De ser que ahi este faltando algo, no tendria porque funcionarte, en el caso contrario en que si este bien la utilizacion de la interrupcion efectivamente esos programas pueden llegar ayudarte. Perdon por entorpecer, sin saber de este tema... era por las dudas.
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:APM int 15h problema

Publicado por MSH (120 intervenciones) el 14/07/2008 18:39:44
Saludos:

Muchos de los servicios que se encuentran en la INT 15H están en desuso en las nuevas máquinas (retardos, organización de memoria, controladores de hardware, timer etc), y la opcion de Auto Power Manager no es la excepción. Hasta donde se, la APM solo se maneja mediante API's a partir de Win2K. De manera que si quieres implementar tu algoritmo (que a juzgar por la información proporcionada, está incompleto) no va a funcionar si la intención es ejecutarlo en winXP.

Hice una prueba rápida con el VMware (MS-DOS instalado), con el programa debug comprobé la rutina de chequeo de la APM:

-a cs:100
xxxx:mov ax,5300
xxxx:mov bx,0000
xxxx:int 15

al ejecutarlo, me devuelve:

AX:0102 BX:0000 ;

Por lo que deduzco que, antes de mandarle la opción de reset o apagado, debes poner la rutina para comprobar que esté instalada la opción APM, luego manejar lo que corresponda hacer con la información devuelta en el registro AX.

Espero sea de utilidad. Eso si, en la medida de lo posible haznos saber de tus pruebas y conclusiones.
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