如何直接对硬盘读写

是BIOS实现int 13h的

实现原理:直接访问FDC/HDC端口进行编程控制


03F0-03F7 ---- FDC 1 (1st Floppy Disk Controller) second FDC at 0370

PORT 01F0-01F7 - HDC 1(1st Fixed Disk Controller) (ISA, EISA)



I/O端口功能表 
--------------------------- 
I/O地址 功能、用途 
--------------------------- 
0    DMA通道0,内存地址寄存器(DMA控制器1(8237)) 
1    DMA通道0, 传输计数寄存器 
2    DMA通道1,内存地址寄存器 
3    DMA通道1, 传输计数寄存器 
4    DMA通道2,内存地址寄存器 
5    DMA通道2, 传输计数寄存器 
6    DMA通道3,内存地址寄存器 
7    DMA通道3, 传输计数寄存器 
8    DMA通道0-3的状态寄存器 
AH    DMA通道0-3的屏蔽寄存器 
BH    DMA通道0-3的方式寄存器 
CH    DMA清除字节指针 
DH    DMA主清除字节 
EH    DMA通道0-3的清屏蔽寄存器 
FH    DMA通道0-3的写屏蔽寄存器 
19H   DMA起始寄存器 
20H-3FH 可编程中断控制器1(8259)使用 
40H   可编程中断计时器(8253)使用,读/写计数器0 
41H   可编程中断计时器寄存器 
42H   可编程中断计时器杂项寄存器 
43H   可编程中断计时器,控制字寄存器 
44H   可编程中断计时器,杂项寄存器(AT) 
47H   可编程中断计时器,计数器0的控制字寄存器 
48H-5FH 可编程中断计时器使用 
60H-61H 键盘输入数据缓冲区 
61H   AT:8042键盘控制寄存器/XT:8255输出寄存器 
62H   8255输入寄存器 
63H   8255命令方式寄存器 
64H   8042键盘输入缓冲区/8042状态 
65H-6FH 8255/8042专用 
70H   CMOS RAM地址寄存器 
71H   CMOS RAM数据寄存器 
80H   生产测试端口 
81H   DMA通道2,页表地址寄存器 
82H   DMA通道3,页表地址寄存器 
83H   DMA通道1,页表地址寄存器 
87H   DMA通道0,页表地址寄存器 
89H   DMA通道6,页表地址寄存器 
8AH   DMA通道7,页表地址寄存器 
8BH   DMA通道5,页表地址寄存器 
8FH   DMA通道4,页表地址寄存器 
93H-9FH DMA控制器专用 
A0H   NM1屏蔽寄存器/可编程中断控制器2 
A1H   可编程中断控制器2屏蔽 
C0H   DMA通道0,内存地址寄存器(DMA控制器2(8237)) 
C2H   DMA通道0, 传输计数寄存器 
C4H   DMA通道1,内存地址寄存器 
C6H   DMA通道1, 传输计数寄存器 
C8H   DMA通道2,内存地址寄存器 
CAH   DMA通道2, 传输计数寄存器 
CCH   DMA通道3,内存地址寄存器 
CEH   DMA通道3, 传输计数寄存器 
D0H   DMA状态寄存器 
D2H   DMA写请求寄存器 
D4H   DMA屏蔽寄存器 
D6H   DMA方式寄存器 
D8H   DMA清除字节指针 
DAH   DMA主清 
DCH   DMA清屏蔽寄存器 
DEH   DMA写屏蔽寄存器 
DFH-EFH 保留 
F0H-FFH 协处理器使用 
100H-16FH保留 
170H   1号硬盘数据寄存器 
171H   1号硬盘错误寄存器 
172H   1号硬盘数据扇区计数 
173H   1号硬盘扇区数 
174H   1号硬盘柱面(低字节) 
175H   1号硬盘柱面(高字节) 
176H   1号硬盘驱动器/磁头寄存器 
177H   1号硬盘状态寄存器 
1F0H   0号硬盘数据寄存器 
1F1H   0号硬盘错误寄存器 
1F2H   0号硬盘数据扇区计数 
1F3H   0号硬盘扇区数 
1F4H   0号硬盘柱面(低字节) 
1F5H   0号硬盘柱面(高字节) 
1F6H   0号硬盘驱动器/磁头寄存器 
1F7H   0号硬盘状态寄存器 
1F9H-1FFH保留 
200H-20FH游戏控制端口 
210H-21FH扩展单元 
278H   3号并行口,数据端口 
279H   3号并行口,状态端口 
27AH   3号并行口,控制端口 
2B0H-2DFH保留 
2E0H   EGA/VGA使用 
2E1H   GPIP(0号适配器) 
2E2H   数据获取(0号适配器) 
2E3H   数据获取(1号适配器) 
2E4H-2F7H保留 
2F8H   2号串行口,发送/保持寄存器(RS232接口卡2) 
2F9H   2号串行口,中断有效寄存器 
2FAH   2号串行口,中断ID寄存器 
2FBH   2号串行口,线控制寄存器 
2FCH   2号串行口,调制解调控制寄存器 
2FDH   2号串行口,线状态寄存器 
2FEH   2号串行口,调制解调状态寄存器 
2FFH   保留 
300H-31FH原形卡 
320H   硬盘适配器寄存器 
322H   硬盘适配器控制/状态寄存器 
324H   硬盘适配器提示/中断状态寄存器 
325H-347H保留 
348H-357H DCA3278 
366H-36FH PC网络 
372H    软盘适配器数据输出/状态寄存器 
375H-376H 软盘适配器数据寄存器 
377H    软盘适配器数据输入寄存器 
378H    2号并行口,数据端口 
379H    2号并行口,状态端口 
37AH    2号并行口,控制端口 
380H-38FH SDLC及BSC通讯 
390H-393H Cluster适配器0 
3A0H-3AFH BSC通讯 
3B0H-3B H MDA视频寄存器 
3BCH    1号并行口,数据端口 
3BDH    1号并行口,状态端口 
3BEH    1号并行口,控制端口 
3C0H-3CFH EGA/VGA视频寄存器 
3D0H-3D7H CGA视频寄存器 
3F0H-3F7H 软盘控制器寄存器 
3F8H    1号串行口,发送/保持寄存器(RS232接口卡1) 
3F9H    1号串行口,中断有效寄存器 
3FAH    1号串行口,中断ID寄存器 
3FBH    1号串行口,线控制寄存器 
3FCH    1号串行口,调制解调控制寄存器 
3FDH    1号串行口,线状态寄存器 
3FEH    1号串行口,调制解调状态寄存器 
3FFH    保留
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  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值