`

(第4章 1)软盘结构及其数据读取

 
阅读更多

参考资料:

http://blog.csdn.net/smallmuou/article/details/6796867

 

        由于后面的汇编中要读取软盘扇区,这里抽空学习一下软盘结构和软盘读取。



 1. 软盘结构

     1.44MB软盘容量计算:

     1.44MB=2(面) * 80(磁道/面) * 18(扇区/磁道) * 512(byte/扇区)

2. 相对扇区号及转换

     在系统中,于是可以通过“盘面+磁道+扇区”访问到相应内容,但是这样比较繁琐,于是有了“(相对)扇区号”的概念。(相对)扇区号实际上是从0开始对磁盘上所有扇区进行的编号。

 

 

扇区物理号               相对扇区号 

0面,0道,1扇区             0   

0面,0道,2扇区             1   

0面,0道,3扇区             2   

…………………….                 

0面,0道,18扇区           17 

1面,0道,1扇区            18 

……………

1面,0道,18扇区           35 

0面,1道,1扇区            36  

...................                               

0面,1道,18扇区           53 

1面,1道,1扇区            54 

...................

 

      可见,软盘扇区号不是我们想象的先排完1面,而是交替排列的。也可以认为是先编完0磁道上的扇区号,然后再编完1磁道上的扇区号,...,最后编完79磁道上的扇区号

 

      调用int 13h读取软盘扇区时,要求通过“指定的扇区号”计算出“柱面号(即磁道号)”、“磁头号(即盘面号)”、“起始扇区号(即是某个磁道上的第几个扇区)”。稍微想想就可以出来了,不必赘述。

 

 

3、软盘读写

在系统中,是怎么读和写软盘?

通过BIOS中断13,详细见下图:


其中:

磁盘号:指的是软盘中的磁道或磁柱;

扇区号:指的是软盘的扇区;

CH存放磁道的低8位,CL的高两位存放磁道的高2位,CL的低6位存放扇区

磁头号:指的是软盘中的盘面;

驱动器号:指具体的软盘,如软盘A,软盘B...

CF为1则表示读取错误;

 

注:读磁盘时,将读到的扇区放到[es:bx]开始的内存中;

        写磁盘时,将[es:bx]开始的一个扇区写到磁盘上。

        这两处,[es:bx]都称为“数据缓冲区”

 

4. 实例

 

;----------------------------------------------------------------------------
; 函数名: ReadSector
;----------------------------------------------------------------------------
; 作用:
;    从第 ax 个 Sector 开始, 将 cl 个 Sector 读入 es:bx 中
ReadSector:
    ; -----------------------------------------------------------------------
    ; 怎样由扇区号求扇区在磁盘中的位置 (扇区号 -> 柱面号, 起始扇区, 磁头号)
    ; -----------------------------------------------------------------------
    ; 设扇区号为 x
    ;                           ┌ 柱面号 = y >> 1
    ;       x           ┌ 商 y ┤
    ; -------------- => ┤      └ 磁头号 = y & 1
    ;  每磁道扇区数     │
    ;                   └ 余 z => 起始扇区号 = z + 1
    push    bp
    mov    bp, sp
    sub    esp, 2            ; 辟出两个字节的堆栈区域保存要读的扇区数: byte [bp-2]

    mov    byte [bp-2], cl
    push    bx            ; 保存 bx
    mov    bl, [BPB_SecPerTrk]    ; bl: 除数
    div    bl            ; y 在 al 中, z 在 ah 中
    inc    ah            ; z ++
    mov    cl, ah            ; cl <- 起始扇区号
    mov    dh, al            ; dh <- y
    shr    al, 1            ; y >> 1 (其实是 y/BPB_NumHeads, 这里BPB_NumHeads=2)
    mov    ch, al            ; ch <- 柱面号
    and    dh, 1            ; dh & 1 = 磁头号
    pop    bx            ; 恢复 bx
    ; 至此, "柱面号, 起始扇区, 磁头号" 全部得到 ^^^^^^^^^^^^^^^^^^^^^^^^
    mov    dl, [BS_DrvNum]        ; 驱动器号 (0 表示 A 盘)
.GoOnReading:
    mov    ah, 2            ; 读
    mov    al, byte [bp-2]        ; 读 al 个扇区
    int    13h
    jc    .GoOnReading        ; 如果读取错误 CF 会被置为 1, 这时就不停地读, 直到正确为止

    add    esp, 2
    pop    bp

    ret
 

 

 

 

 

  • 大小: 50.6 KB
  • 大小: 6.9 KB
分享到:
评论

相关推荐

    软盘驱动基本原理

    #### 一、软盘子系统及软盘结构 **软盘子系统**由三个核心部分组成:软盘、软驱(软盘驱动器)和软盘控制器。 1. **软盘**:主要用于存储数据。它由盘片和保护套组成,其中盘片是以聚酯膜作为基底,并在其表面涂有...

    硬盘结构及其分区简介

    第四章 扩展INT 13H调用简介 扩展INT 13H调用是为了克服基本INT 13H的限制而引入的,它可以处理大于528MB的大容量硬盘,提供更高级的功能,如LBA(逻辑块地址)访问,支持更大的硬盘空间。 第五章 磁盘分区简介 ...

    DEBUG功能介绍:1.直接输入、更改、跟踪、运行汇镅栽闯绦颍华;2.观察操作系统的内容;3.查看ROM BIOS的内容;4 观察更改RAM内部的设置值;5.以扇区或文件的方式读写软盘数据。

    此外,DEBUG还可以用来直接读取和写入软盘上的数据,这在处理特定类型的数据故障或恢复工作时非常有用。 #### 三、DEBUG中的地址表示 在DEBUG中,地址通常采用段地址与段内地址相结合的形式表示。段地址可以通过...

    数据结构课程设计总则

    - 至少四组测试数据及其输出结果,确保测试数据完整与严格。 - **附录**: - 带注释的源程序,如提交软盘,则列出文件名清单。 - **参考文献**: - 相关参考资料与文献。 #### 四、具体示例 ##### 示例一:...

    数字电路与逻辑设计课件:第四章 part7随机访问存储器与快闪存储器.ppt

    《数字电路与逻辑设计》第四章的Part7主要聚焦于随机访问存储器(RAM)和快闪存储器(Flash Memory)这两种重要的半导体存储技术。在深入探讨这些存储器之前,我们先了解一下存储器的基本概念。 存储器是电子设备中...

    第章微机原理与接口技术22022优秀文档.ppt

    总的来说,《微机原理与接口技术》这一章深入讲解了DMA技术的工作原理、8237 DMA控制器的特性及其内部结构,以及如何利用这些特性进行数据传输和系统扩展,对于理解和应用微机系统的接口技术具有重要的理论指导意义...

    嵌入式开发教程之自己定制软盘上的Linux系统方案--千锋培训

    内核被加载后,初始化设备驱动和数据结构,然后通过Ramdisk Word找到根文件系统的位置。 2. **定制Grub引导程序**: 在软盘启动时,Grub作为一个引导程序非常重要。它能够帮助定位内核并提供用户交互界面。Grub...

    MASM_MASM时钟程序及其源代码_

    4. **RTC原理**:理解RTC的工作机制,包括其内部寄存器结构,如何读取和设置时间。 5. **X86体系结构**:熟悉X86架构的中断系统,例如INT 13H中断用于磁盘操作,INT 1CH中断用于获取系统时间。 6. **引导加载程序*...

    第1部分计算机基础知识习题与答案.pdf

    7. 软盘的存取速度通常比硬盘慢,这是由于硬盘的高速旋转和更先进的数据读取技术。 8. 字处理软件属于应用软件,而不是系统软件。 9. 计算机直接执行的是机器语言程序,这是正确的。 10. 计算机中最小的存储单位...

    fat文件系统整理内容(代码)

    2. **解析文件信息**: 从目录条目中提取文件的起始簇号,这是文件数据的第一个存储位置。 3. **读取数据**: 从起始簇开始,根据FAT表的指示,按顺序读取后续簇,直到文件结束标志出现。每次读取的大小等于簇的大小。...

    汇编语言课程设计2

    软盘数据读取到2000:0 mov ax, 2000h mov es, ax mov bx, 0 mov al, 15 ; 读取的扇区数 mov ch, 0 ; 0磁道 mov cl, 2 ; 2扇区 mov dl, 0 ; 0号驱动器 mov dh, 0 ; 0面 mov ah, 2 int 13h ``` 读取完成后,程序会...

    计算机基础知识试题及答案2013.pdf

    操作是( )。A.只能读不能写 B....28. 软盘加上写保护后,只能读取数据,不能写入或修改数据。 这些题目涉及的知识点广泛,是学习计算机基础的重要组成部分,对于理解计算机工作原理和技术发展有重要作用。

    PC—DOS磁盘引导扇区内容注释

    - `MOV AX, 0201`,其中AH=02表示读操作,AL=01表示读取1个扇区。 - `MOV BX, 0200`,设置数据存放的起始地址为200H。 - `MOV CX, 0001`,低六位表示从某头某柱的第几个扇区开始读写,这里设为0001,表示读取第一...

    计算机基础第一章复习题含答案-推荐文档.doc

    6. **文件的概念**:在计算机科学中,程序、数据及其相关的文档合称为**文件**。这是存储和组织信息的基本单位之一。 7. **计算机系统层次结构**:计算机系统的层次结构中,位于硬件之外的所有层次统称为**软件系统...

    0道损坏软磁盘修复工具

    在IT领域,软磁盘是一种早期的存储介质,尽管现在已经被更先进的技术如硬盘驱动器、固态硬盘和闪存设备所取代,但了解软磁盘及其相关问题仍然是计算机历史和数据恢复知识的重要组成部分。标题提到的“0道损坏”是指...

    计算机考试题实用.pdf

    1. **电子计算机的诞生**:世界上第一台电子计算机ENIAC(Electronic Numerical Integrator And Computer)诞生于1946年,标志着计算机时代的开始。 2. **数据表示**:对于计算机来说,数据是以二进制(Binary)...

    《Linux操作系统》.doc

    - **第四章:Shell命令集及编程环境** - 基本操作命令 - Shell命令与磁盘分区访问 通过以上内容的学习,学生不仅能够掌握Linux操作系统的理论知识,还能够在实践中提升技能,为将来从事软件工程或计算机相关领域...

    计算机基础知识试题及答案 (1).docx

    28. **软盘写保护**:写保护后,可以读取软盘,但不能写入数据,选项A。 29. **接口适配器**:外部设备需通过接口适配器与主机连接,选项B。 30. **计算机字长**:4个字节的字长意味着CPU一次处理32位二进制数据,...

    大学计算机考试答案.pdf

    15. 写保护功能:软盘加上写保护后,只能进行读取操作,不能写入或修改数据。 16. CD-ROM:多媒体计算机的CD-ROM是一种只读光盘,用于存储大量数据,不能被写入或修改。 17. 防止病毒:防止软盘感染病毒的方法包括...

Global site tag (gtag.js) - Google Analytics