注册 登录
编程论坛 汇编论坛

扩展int13读磁盘的问题?

petsatan 发布于 2008-05-27 21:04, 1148 次点击
下面这段代码,无法读出磁盘指定扇区的数据,应该是buf有问题,但是不知道问题究竟出哪了。
高手指点一下 。。

datasg  segment
        tmpbuf     db 512 dup(0)
DAP:        
        packsize   db 16
        reserved   db 0
        blockcount dw 1
        buffoff    dw 0
        buffseg    dw 0
        blocknum   dq 1
        
        file   db   '001 ',0
datasg  ends

codesg  segment
assume  cs:codesg,ds:datasg
start:
        mov ax,datasg
        mov ds,ax
        mov [buffseg],seg tmpbuf
        mov [buffoff],offset tmpbuf
        mov ah,42h
        mov dl,80h
        mov si,offset DAP
        int 13h
        jnc exit

        mov dx,offset file
        mov cx,0
        mov ah,3ch              ; ds:dx 文件名 ,创建一个带句柄的文件
        int 21h
        
        mov bx,ax               ; ax 为文件的句柄
        mov dx,0
        mov cx,512
        mov ah,40h              ; cx -- number of bytes to write  
                                ; bx -- file handle
                                ; ds:dx -- pointer buffer
        int 21h

exit:        
        mov ah,3eh              ; close a file with handle
        int 21h
        mov ax,4c00h
        int 21h

codesg  ends
end     start
2 回复
#2
soerion2008-05-29 21:00
int 13h 用的是es:bx 作为读出来的值的buffer.
你应该把es, bx 赋值, 然后再从es, bx读出数据
#3
petsatan2008-05-29 21:54
楼上的。。。
你看到功能号是42h啊,
是int13的扩展读功能
你说的是基本读。。。
1