社区
汇编语言
帖子详情
技术讨论,关于IDE设备的读写
Areslee
2002-08-20 03:06:15
我在直接编程访问IDE设备(就是硬盘啦)时发现如果一次只读写一个扇区时很正常,但用多扇区读写时好象在每个扇的数据传送完之后要等待一段时间才能传送下一扇区,请问有没有人知道这是怎么回事?至少应等待多久?
还有,有没有人做过DMA方式的访问?
...全文
86
16
打赏
收藏
技术讨论,关于IDE设备的读写
我在直接编程访问IDE设备(就是硬盘啦)时发现如果一次只读写一个扇区时很正常,但用多扇区读写时好象在每个扇的数据传送完之后要等待一段时间才能传送下一扇区,请问有没有人知道这是怎么回事?至少应等待多久? 还有,有没有人做过DMA方式的访问?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Areslee
2002-10-08
打赏
举报
回复
搞定了,还是Jiessie说得对,要检查状态寄存器的最高位,下面附上最终版的源代码:
读取3FH处的两个扇区:
code segment
assume cs:code
start:
push cs
pop ds
call waitfree
jnz err
mov dx,1f0h
add dx,3
mov al,3fh
out dx,al
call waitfree
jnz err
mov al,0
inc dx
out dx,al
call waitfree
jnz err
inc dx
out dx,al
call waitfree
jnz err
mov al,0e0h
inc dx
out dx,al
call waitfree
jnz err
mov dx,1f2h
mov al,2
out dx,al
call waitfree
jnz err
mov dx,1f7h
mov al,21h
out dx,al
call waitfree
jnz err
mov cx,256
mov dx,1f0h
mov di,offset sector
push cs
pop es
read: in ax,dx
stosw
loop read
err:
add dx,7
in al,dx
mov bx,ax
__wait: call waitfree
jnz __wait
mov cx,256
mov dx,1f0h
read1: in ax,dx
stosw
loop read1
mov ax,4c00h
int 21h
waitfree proc
push cx
push dx
push ax
Mov DX,1f7H
Sub CX,CX
_Wait: In AL,DX
and al,0d0h
Cmp AL,50H
Jz Ok
Loop _Wait
ok: pop ax
pop dx
pop cx
ret
waitfree endp
align 16
sector dw 512 dup(0)
code ends
end start
Areslee
2002-10-07
打赏
举报
回复
read: in ax,dx
xchg al,ah
stosw
loop read
应该改为:
read: in ax,dx
stosw
loop read
Areslee
2002-10-07
打赏
举报
回复
是的。
会思考的草
2002-10-07
打赏
举报
回复
用IDE寄存器?
Areslee
2002-10-07
打赏
举报
回复
直接IO读硬盘的例子:
读主引导扇区
code segment
assume cs:code
start:
call waitfree
jnz err
mov dx,1f0h
add dx,3
mov al,0
out dx,al
inc dx
out dx,al
inc dx
out dx,al
mov al,0e0h
inc dx
out dx,al
mov dx,1f2h
mov al,1
out dx,al
mov dx,1f7h
mov al,21h
out dx,al
call waitfree
jnz err
mov cx,256
mov dx,1f0h
mov di,offset sector
push cs
pop es
read: in ax,dx
xchg al,ah
stosw
loop read
err:
mov ax,4c00h
int 21h
waitfree proc
push cx
push dx
push ax
Mov DX,1f7H
Sub CX,CX
_Wait: In AL,DX
and al,50h
Cmp AL,50H
Jz Ok
Loop _Wait
ok: pop ax
pop dx
pop cx
ret
waitfree endp
sector dw 256 dup(0)
code ends
end start
Areslee
2002-09-14
打赏
举报
回复
clares.myrice.com/links.htm
zky
2002-09-13
打赏
举报
回复
谁有相关资料,那有下载?
firewings
2002-09-04
打赏
举报
回复
To Areslee(易水):
sorry!我现在对直接端口操作还不是很熟悉。怎样才能够通过in 和out这两个命令向ide设备发送命令呢?所有ide设备的端口都相同吗?具体发送命令的格式是怎样的呢?能不能给一段简单的例子,说明一下?
firewings
2002-08-31
打赏
举报
回复
to Areslee (易水) :
你做的那个直接读的程序能不能也email给我一份?让我也学习学习!我现在有个程序是用int 13h扩展读写硬盘。另外我想试试用直接IO读写cdrw!
先谢谢了!
Areslee
2002-08-31
打赏
举报
回复
那么有人做过DMA传输的吗?
to firewings():
你照着IDE命令集写就行了
Jiessie
2002-08-30
打赏
举报
回复
非常报歉,你前几次问我的问题我都有知道,我想,只能在我离开这公司的时候才能说!
IDE中,每读一个扇区都必须检查 status register.. 直到not BSY和D??东东,记不清了!也就是ATA/ATAPI中所讲的!
dszsun
2002-08-21
打赏
举报
回复
哦,我的程序就是在windows的,看来我用不了那办法哦:(
Areslee
2002-08-21
打赏
举报
回复
我只是做的一个测试程序,你按照IDE规范上去写就行,很简单的。
不知你的程序运行在什么平台下,WINDOWS下是不能这样做的
dszsun
2002-08-21
打赏
举报
回复
哦,做驱动可以?我现在做的就是一个vxd呀。已经在网友 neocosmic(不顾一切) 的指导下用IOS_SendCommand的办法实现了对扇区的读写。
Areslee
2002-08-21
打赏
举报
回复
做区动啊
dszsun
2002-08-20
打赏
举报
回复
关注ing......,
另外,我正在做一个硬盘加密出现,但我用的不是DMA方式,那我还不会,我正在用其它的扇区读写办法。如果我能想你那样直接访问IDE就好呀!你能把你的程序email个我学习吗?谢谢!
dszsun@sina.com
ide
-cd.rar_page
Capabilities Page size including 8 bytes of Mode Page Header.
CF卡接口规范(PDF)
英文资料 详细描述了CF卡的三种工作模式,以及相关的设计说明。
SCSI与
IDE
接口:深入理解协议、应用与编程
SCSI编程接口主要通过SCSI命令集来实现与存储
设备
的交互。开发者可以利用C语言等编程语言直接调用SCSI命令,实现对存储
设备
的
读写
操作。在Linux环境下,可以通过lib SCSI库来实现相关操作。这个库提供了一系列的函数,能够帮助开发者发送SCSI命令,检查状态,并处理错误。此外,还有其他高级接口如SCSI Generic (SG) 对于更复杂操作的支持。
IDE
接口的编程方法相对简单,通常使用的是ATA标准。
SD card + Arduino
IDE
如何提高SD card的
读写
速度
目前来说达到的速度不是很让我满意,虽然够用,但是应该还有不小的提升空间,在后续会继续探索。如果你有任何疑问欢迎到评论区留言,我会尽力回复。如果对我所介绍的内容有任何改进的建议也欢迎告诉我!
VB6开发的HID
读写
测试工具实践
本文还有配套的精品资源,点击获取 简介:本文介绍的HID
读写
测试工具,利用VB6语言开发,主要针对HID
设备
进行数据的
读写
测试,包括键盘、鼠标和游戏控制器等。此工具无需预处理,即可直接运行在具备VB6运行环境的计算机上。工具具备读取和写入HID
设备
数据的核心功能,支持USB HID通信。开发者可利用Jan Axelson的开源代码,自定义VIP和PID设置,以模拟不同USB...
汇编语言
21,496
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章