mov al,0a0h ;磁盘0,磁头0 out dx,al
mov dx,1f2h ;要读入的扇区数量 mov al,1 ;读一个扇区 out dx,al
mov dx,1f3h ;要读的扇区号 mov al,1 ;扇区号为1 out dx,al
mov dx,1f4h ;要读的柱面的低8位 mov al,0 ; 柱面低8位为0 out dx,al
mov dx,1f5h ; 柱面高2位 mov al,0 ; 柱面高2位为0(通过1F4H和1F5H端口我们可以确定 ; 用来读的柱面号是0) out dx,al
mov dx,1f7h ;命令端口 mov al,20h ; 尝试读取扇区 out dx,al still_going: in al,dx test al,8 ;扇区缓冲是否准备好 jz still_going ;如果扇区缓冲没有准备好的话则跳转,直到准备好才向下执行。
mov cx,512/2 ;设置循环次数(512/2次) mov di,offset buffer mov dx,1f0h ;将要传输的一个字节的数据 rep insw ;传输数据
; ------
mov ax,201h ;以下是用INT13H读硬盘的0磁头、0柱面、1扇区 mov dx,80h mov cx,1 mov bx,offset buffer2 int 13h
mov cx,512 ;以下部分用来比较2种方法读出的硬盘数据 mov si,offset buffer mov di,offset buffer2 repe cmpsb jne failure mov ah,9 mov dx,offset readmsg int 21h jmp good_exit failure: mov ah,9 mov dx,offset failmsg int 21h good_exit: ;以下部分用来结束程序 本新闻共 6页,当前在第 4页 1 2 3 4 5 6 上一篇:在汇编中使用浮点运算的 DEMO 下一篇:天龙还原精灵卸载器源代码 |