大家帮我看下!为什么我这样读软盘不成功
;read 0,0,2 sector to 07e00h
read_sec_num equ 550
mov ax,07e0h
mov es,ax
mov bx,0000h ;保存数据的缓冲区指针
mov cx,0002h ;ch为开始读的柱面数,cl为开始的扇区数
mov dx,0000h ;dh为开始的磁头数,dl为所在驱动器,00为软盘 BIT7为1则是硬盘,即80H开始
mov si,read_sec_num ;所要读的扇区数,因为是每次读一扇区,用循环来实现读多扇区
;
;高密度软盘的格式为side=2,cyl=80,sector=18,从0面0柱1扇区开始,直到
;0面0柱18扇区,下来是1面0柱到18扇区,再下来到0面1柱0扇区,直到第79柱
next_cylinder:
mov ah,dh ;ah做为磁头计数器
next_side:
mov al,cl ;al做为扇区计数器
next_sector:
push ax
mov cl,al
mov dh,ah
Read_fd_sector:
mov ax,0201h
int 13h
jb p_die
pop ax
dec si
jz start ;这是下面主程序的开始点
add bx,200h
jnc Address_Is_right
Address_adjust: ;当判断BX已超过FFFFH时重新设置段址ES和偏移BX
push ax
mov ax,es
add ax,1000h
mov es,ax
xor bx,bx
pop ax
Address_Is_right:
inc al
cmp al,18
jbe next_sector ;扇区数不大于18就继续读下一扇区,大于就调整SIDE,
;读取下一个磁头的18扇区
mov cl,1 ;扇区数赋初值
inc ah
cmp ah,1
jbe next_side ;磁头数不大于1就读下一个磁头,大于就转到另一个柱面去读取
mov dh,0
inc ch
cmp ch,79
jbe next_cylinder
p_die:
;display error message
xor dx,dx
mov ah,03h
int 10h
mov ax,1301h
mov bl,07h
mov cx,read_err_len
mov bp,offset read_err
push cs
pop es
int 10h
jmp $
read_err db 'Floppy_disk readed fault!'
read_err_len=$-read_err