社区
汇编语言
帖子详情
技术讨论,关于IDE设备的读写
Areslee
2002-08-20 03:06:15
我在直接编程访问IDE设备(就是硬盘啦)时发现如果一次只读写一个扇区时很正常,但用多扇区读写时好象在每个扇的数据传送完之后要等待一段时间才能传送下一扇区,请问有没有人知道这是怎么回事?至少应等待多久?
还有,有没有人做过DMA方式的访问?
...全文
82
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
HR2000 RFID
读写
器delphi开发代码
标题"HR2000 RFID
读写
器delphi开发代码"表明我们要
讨论
的是如何在Delphi环境下利用HR2000.dll库来实现对HR2000 RFID
读写
器的控制。Delphi是一种强大的面向对象的 Pascal 编程语言,广泛应用于Windows应用开发,其...
ide
to cf card
标题中的“
IDE
to CF Card”指的是将传统的
IDE
(Integrated Drive Electronics,集成电子驱动器...通过分析提供的原理图和相关资料,电子爱好者或工程师可以自行制作这样的转换板,从而将旧的
IDE
设备
与现代的CF卡兼容。
yingpanjiekou.rar_
ide
_yingpanjiekou
“www.pudn.com.txt”可能是一个来源于网络资源的文本文件,可能包含了关于
IDE
接口的详细
技术
规格、编程指南或者是从PUDN(Programming University Discussion Network)论坛中摘录的
讨论
内容。这类文本文件可能涵盖...
ide
-cd.rar_page
虽然
IDE
光驱通常不直接使用SCSI命令,但它们可以支持一种名为ATA over Ethernet (AoE)或ATA Passthrough的
技术
,使得SCSI命令可用于控制
IDE
设备
。在SCSI命令集中,"Mode Sense"和"Mode Select"命令用于获取或设置...
s3c44b0x-cf.zip_44b0
ide
_CF_CF ARM_CF卡_S3C44B0X
总结来说,"s3c44b0x-cf.zip"资源提供了一个关于在Samsung S3C44B0X微处理器上实现
IDE
接口与CF卡交互的实例,涵盖了硬件接口设计、驱动程序开发、ATA协议理解和嵌入式系统实践等多个方面,对于深入理解ARM7平台的...
汇编语言
21,497
社区成员
41,616
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章