Ensamblador - Abrir el cd-rom

 
Vista:

Abrir el cd-rom

Publicado por Jose (2 intervenciones) el 25/11/2008 06:06:05
Que tal, hace mas de tres dias pase por aqui y les pedi ayuda sobre un codigo. Pero aun no hay respuesta. Bueno, ya le entendi al codigo, y ya me abre l bandeja del cd, pero no la cierra. La verdad no se que falte. Creo son instrucciones para cerrar, pero no e encontrado nada por la web, asi que espero me ayuden. Aqui les dejo el codigo... sale grax, aqui viene como se compila y se crea el .com, y tambien como deve correrse el programa. ok, gracias. Incluso tambien viene una explicacion de para que funciona cada parte. Solo me falta que cierre la bandeja del cd... ok

; nasm -f bin -o abrir.com abrir.asm
org 100h
section .data

msg DB 0Dh,0Ah,"Open/close CD-ROM drive tray. Usage:",0Dh,0Ah
DB "[Nombre del Programa] O [CD-ROM] or "
DB "[Nombre del Programa] C [CD-ROM].",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,
initialize
; 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
abort

; Solicitud de datos por debajo de la cabecera será escrito en cabecera de bloque de datos se ejecuta como programa.
program
; 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:
usage:
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

cual es el comando para que funcione el cd rom

Publicado por Oscar de la Roca (1 intervención) el 09/07/2009 01:26:03
Por favor necesito preguntarles algo:

Tengo una computadora pentium y funciona con windows 95 pero el disco se dañó y tuve que formatearlo y el problema es que no tengo el DOS 6 y necesito instalarle windows de nuevo pero con un cd. El problema es que antes tengo que ponerle el dos y no lo tengo y pregunto: Como se llama el comando del dos que hace que funcione el cd.

Gracias

[email protected]
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