Ensamblador - abrir la bandeja del CD-ROM con interrupciones

   
Vista:

abrir la bandeja del CD-ROM con interrupciones

Publicado por Jose Luis Molina (2 intervenciones) el 22/11/2008 05:14:12
Que tal, ojala y me puedan ayudar... Tengo un programa en esamblador que se supone deve abrir/cerrar la bandeja del CD-ROM. Pero el problema mas grande es que no se mucho de esta programacion solo un poco y en general. Segun yo este programa esta bien, ya que lo compilo y creo el binario, y depues creo el .com, no se tal vez lo hago mal. Espero me ayuden y me digan mis errores y como compilar o correrlo. La verdad me urge, como veran esta acabado bueno eso digo yo jajaja, Bueno de ante mano gracias!!!

Codigo:

org 100h
section .data

msg DB 0Dh,0Ah,"Open/close CD-ROM drive tray. Usage:",0Dh,0Ah
DB "[PROGNAME] O [CD-ROM DRIVE LETTER] or "
DB "[PROGNAME] C [CD-ROM DRIVE LETTER].",0Dh,0Ah,"$"
section .bss
hdr resb 26

bufr resb 130
section .text
mov ax, 1500h
int 2Fh

mov cl, bl ; Obtiene el numero de Unidades del CD-ROM
mov al, [5Dh] ; Dejar que analizar dos - FCB tienen
mov dl, [6Dh] ; Nuestros dos parametros de todos los uppercased

sub dl, 'A' ; Convertir letra de unidad a número js usage
cmp al, 'O'
mov dh, 0 ; Comando para abrir la Bandeja jz do_it
cmp al, 'C'
mov dh, 5 ; Comando para cerrar la bandeja jnz usage
do_it:
; El siguiente bloque establece en una sub-unidad AH el número correspondiente a la orden
; de la unidad. Esto es redundante si se ejecuta bajo MSCDEX, o la SHSUCDX
; Win9x CD-ROM, pero es necesaria en virtud de NWCDEX, que no inicialize
; La petición de cabecera de la unidad byte para las llamadas a 2Fh INT, la funcion 1510h.
mov ax, 1501h ; Funcion, "Get CD-ROM Lista de dispositivos"
mov bx, bufr ; Pone una lista de dispositivos incl. subunidad nn. En el Buffer.

int 2Fh ; Asociar a las subunidades no correcta, Con a unidad.
mov si, bx ; Lista de dispositivos de copia addr. a otro puntero reg.
mov bx, hdr ; Conjunto de registro de puntero a la lista de unidad nos.

mov ax, 150Dh ; Obtener unidad de CD-ROM cartas (s) en buffer
int 2Fh
RPT: mov ah, [si] ; Obtener sub-unidad no. en AH
cmp [bx], dl ; Unidad de los partidos de línea de comandos en un buffer?
je NXT ; Si es asi, valido unidad de CD-ROM conductor hacer solicitud
inc bx ; Si no es asi, se prepara para comprobar la siguiente unidad no.
add si, byte 5 ; Preparar para almacenar próximo sub-unidad no.
loopne RPT ; Si la unidad no coincide, for hasta que todos controlen
jmp short TRM1 ; Si CX=0, no coincide con la unidad en la línea de comandos, Abortar

; Solicitud de datos por debajo de la cabecera será escrito en cabecera de bloque de datos se ejecuta como programa.
; La unidad número de lsita, que ha cumplido se propósito, se sobrescribirá.
NXT: mov cl, dl ; Obtener la unidad no. en buen registro para la convocatoria

mov bx, hdr ; Prepara para almacenar los parámetros en la solicitud de cabecera
mov byte [bx], 0Dh ; Conjunto de bytes de logitud de cabecera de la solicitud de cabecera
mov byte [bx + 1], AH ; Establecer su.unidad número de unidad especificada
mov byte [bx + 2], 0Ch ; Conjunto de control de código byte de la solicitud de cabecera
mov [bx + 10h], CS ; Conjunto de CD-ROM IOCTL solicitud de salida de cabecera
; Transferecia de la dirección a este programa de la seg.
mov word [bx + 0Eh], hdr + 12h ; y el buen despegue establecido (offset)
mov [bx + 12h], DH ; Comando set código para abrir o cerrar la puerta
mov ax, 1510h ; Enviar CD-ROM controlador de dispositivo, solicitud para abrir o cerrar la puerta.
int 2Fh ; La entrada: BX= addr. Cabecera de la Solicitud, CX= undiad no.

mov AL, [bx + 3] ; Utilizar bajo la condicion de byte de la palabra como código de salida
jmp short TRM0 ; (0: no hay error; otros: conductor se ha producido un error) Uso:
TRM1: mov ah, 9 ; Despues de terminar el mensaje en cao de la línea de comando equivocado
mov dx, msg ; Mostrar el uso de mensaje

int 21h
mov al, 1 ; si aquí, el error en los parametros
; conjunto código de salida =1
TRM0: mov ah, 4Ch ; Finaliza.
int 21h
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:abrir la bandeja del CD-ROM con interrupciones

Publicado por al (1 intervención) el 13/02/2010 00:27:10
vete ala chingada
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