下面这段代码,无法读出磁盘指定扇区的数据,应该是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