精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>汇编语言>>各种教程>>解密教程>>解秘教程3

主题:解秘教程3
发信人: shangbings()
整理人: cobe(2001-08-06 13:03:58), 站内信件
第三章 磁盘控制卡的认识
3-1 磁碟控制卡的介绍

  磁碟控制卡上的 uPD765A 是整个磁碟作业的核心 ,而 uPD765A 靠著3个I/O 埠的暂存器与 CPU 沟通 ,这三个暂存器如下 :
    &h3F2 : 数位输出暂存器
    &h3F4 : 主状态暂存器
    &h3F5 : 资料/状态 暂存器
  资料传输到磁片时 ,又可分为 DMA 与 非DMA 模式 ,由於与主题无关略过。
  uPD765A 磁碟控制卡可下达以下指令 :
    ┌━━━━━━━━━━━━━━━━━━━━━━━━━━┐
    ┃ Read Data (读取资料)                ┃
    ┃ Write Data (写入资料)               ┃
    ┃ Read ID (读取 ID)                 ┃
    ┃ Format A Track (将磁轨格式化)           ┃
    ┃ Read Deleted Dtat (读取已删除的资料)        ┃
    ┃ Write Delete Data (写入已删除的资料)        ┃
    ┃ Read A Track (读取磁轨)              ┃
    ┃ Seek (找寻磁轨)                  ┃
    ┃ Scan EQUAL (扫瞄比对相等)             ┃
    ┃ Scan high or equal (扫瞄大於或等於)        ┃
    ┃ Scan low or equal (扫瞄小於或等於)        ┃
    ┃ Recalibrate (校准磁头 ,磁头回到第零轨)       ┃
    ┃ Sense Interrupt status (感测中断状态)       ┃
    ┃ Sense Driver Status (感测磁碟机状态)        ┃
    ┃ Specify (指定)                   ┃
    └━━━━━━━━━━━━━━━━━━━━━━━━━━┘

3-2 工作方式

             ┌━━━━━┐
             ┃ CPU ┃
             └━━━━━┘
                ↑
                ↓
           系统汇流排 (SYSTEM BUS)             
    ↑         ↑
    ↓         ↓     资料窗  ┌━━━┐
 ┌━━━━━┐ DRQ ┌━━━━━┐←━━━━━┤ RLL ├┬━ ┬━━┐
 ┃     ┃←━ ┃     ┃  RD DATA └━━━┘┃  ┃ 磁 ┃
 ┃     ┃   ┃     ┃←━━━━━━━━━━┘  ┃ 碟 ┃
 ┃  8237  ┃DACK ┃ uPD765A ┃━━━━━━━━━━━━→ ┃ 机 ┃
 ┃     ┃━→ ┃     ┃  WR DATA         ┃ 介 ┃
 ┃DMA 控制器┃   ┃  FDC  ┃  输入控制         ┃ 面 ┃
 ┃     ┃   ┃     ┃            → ┃ ⊙ ┃
 ┃     ┃━→ ┃     ┃            → ┴━━┘
 └━━━━━┘ TC └━━━━━┘  输出控制
        终结计数
3-3 中断简介
  由于汇编高手甚多 ,因此各中断向量便不再介绍 ,只介绍几个与磁盘有关的功能 ,其它中断请自行查书。
      INT 13h  
            
      (AH)=0 : 重置软驱 ,将磁头拉到 TRACK 0
      (AH)=1 : 读入磁盘状态
      (AH)=2 : 将指定扇区读入记忆体
      (AH)=3 : 将记忆体数据写入扇区
      (AH)=4 : 查验扇区
      (AH)=5 : 格式化指定扇区
      返回代码 (AH or AL 值,以二进位来看)
      00000001 传给软驱 I/O 指令不正确
      00000010 找不到位址标记
      00000011 磁盘贴有写保护
      00000100 找不到指定扇区
      00001000 DMA 越界
      00001001 超过DMA边界(有64K)处存取数据
      00010000 CRC 错误
      00100000 软驱控制卡损坏
      01000000 Seek 动作错误
      10000000 时间超过而软驱仍未动作
            
      INT 1Eh  
            
      INT 1E 指向的位址就是磁盘参数表 ,一般指向 0000:522-52C
     0000:0522 DF 步进速率
     0000:0523 02 表 DMA 传输数据
     0000:0524 25 马达起动时等待 25ms
     0000:0525 02 N值为2 (512Bytes)
     0000:0526 09 可容许最大扇区编
     0000:0527 2A 间隙(Gap)长度
     0000:0528 FF 扇区数据长
     0000:0529 50 格式化时的间隙长度
     0000:052A F6 填入空白扇区的位元值
     0000:052B 0F 移动每一道后等待25ms再读写数据
     0000:052C 02 马达起动时间

[关闭][返回]