标题:求助,关于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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-312532-1-1.html




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

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