| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3510 人关注过本帖
标题:求助,关于AT兼容硬盘的写操作。
取消只看楼主 加入收藏
malpower
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2010-7-2
结帖率:100%
收藏
已结贴  问题点数:0 回复次数:4 
求助,关于AT兼容硬盘的写操作。
小弟目前正在为内核编写驱动,在对AT硬盘进行写操作时出现了一些问题。
在我发出0x30命令后,一直不会出现中断。
不知是什么问题。
代码如下:

KRNL_HD_WriteSector:
    cli
    push ebp
    mov ebp,esp
    push eax
    push edx
    push ds
    mov ax,24
    mov ds,ax
    mov eax,dword[ebp+20]                        ;;要写入的数据的线性地址
    mov dword[dRwAddress],eax                        ;;将地址存入变量
    mov al,1
    mov byte[dRwSwitch],al                        ;;我的方向变量1表示写操作
    mov ax,0x1F2
    mov dx,ax
    mov al,1
    out dx,al
    inc dx
    mov al,byte[ebp+8]                           ;;扇区号参数
    out dx,al
    inc dx
    mov al,byte[ebp+12]                            ;;磁道号参数低8位
    out dx,al
    inc dx
    mov al,byte[ebp+13]                                ;;磁道号参数高8位
    out dx,al
    mov al,0xA0
    add al,byte[ebp+16]                                ;;磁头号参数
    inc dx
    out dx,al
    mov dx,0x1F7
    mov al,0x30
    out dx,al                                        ;;发出命令0x30(读带重试)
    pop ds
    pop edx
    pop eax
    pop ebp
    sti
    ret        
搜索更多相关主题的帖子: 硬盘 
2010-07-10 00:49
malpower
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2010-7-2
收藏
得分:0 
忘了说明:使用NASM编译器。
2010-07-10 00:50
malpower
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2010-7-2
收藏
得分:0 
呵呵,我一直使用的 nasm啦,感觉还好。
大哥的意思是,除了发出命令以外还需要将一个数据写到0x1F0以后才会发生中断吗?
2010-07-10 11:12
malpower
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2010-7-2
收藏
得分:0 
主要是我在做读扇区操作时,是发出了0x20命令后,硬盘完成寻道就发生中断,在中断处理程序里读取扇区的数据。
不知写操作是否类似。
2010-07-10 12:05
malpower
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2010-7-2
收藏
得分:0 
恍然大悟~~~~~~~~~~~
谢谢大哥指点~~~~~~
2010-07-10 12:16
快速回复:求助,关于AT兼容硬盘的写操作。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016498 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved