- 浏览: 543592 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (231)
- 一个操作系统的实现 (20)
- 汇编(NASM) (12)
- Linux编程 (11)
- 项目管理 (4)
- 计算机网络 (8)
- 设计模式(抽象&封装) (17)
- 数据结构和算法 (32)
- java基础 (6)
- UML细节 (2)
- C/C++ (31)
- Windows (2)
- 乱七八糟 (13)
- MyLaB (6)
- 系统程序员-成长计划 (8)
- POJ部分题目 (10)
- 数学 (6)
- 分布式 & 云计算 (2)
- python (13)
- 面试 (1)
- 链接、装载与库 (11)
- java并行编程 (3)
- 数据库 (0)
- 体系结构 (3)
- C++ template / STL (4)
- Linux环境和脚本 (6)
最新评论
-
chuanwang66:
默默水塘 写道typedef void(*Fun)(void) ...
C++虚函数表(转) -
默默水塘:
typedef void(*Fun)(void);
C++虚函数表(转) -
lishaoqingmn:
写的很好,例子简单明了,将观察者模式都表达了出来。
这里是ja ...
观察者模式——Observer
参考资料:
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
发表评论
-
(第三章 8 )特权级——保护模式的特权级检查(DPL,RPL,CPL, 一致代码段,非一致代码段)
2013-03-20 11:14 2366特权级是保护模式下一个重要的概念,CPL,RPL和 ... -
(第6章 1)最简单的进程
2012-10-11 10:56 1035第一步——ring0 --> ring1 ... -
(第4章 2)突破512字节的限制
2012-09-15 11:40 2792一、代码 ... -
(第三章 12)中断
2012-09-11 20:20 1033一、中断和8259A中断控制器 1. ... -
(第三章 8 )特权级——CPL、DPL、RPL
2012-07-11 10:02 2408很久以后,等我大量翻阅关于“保护模式的特权级检 ... -
(第三章 0)保护模式如何“保护”
2012-03-14 07:59 1083IA32中“保护模式”的“保护”二字理解:(P48) ... -
(第一、二章)nasm的汇编和反汇编
2012-02-27 13:36 4975nasm的汇编和反汇编 步骤: 1. 汇编(bo ... -
(第三章 14)克勤克俭用内存——初始化页目录表、页表,开启分页机制
2011-07-22 11:30 249在启动分页机制SetupPaging之前,先调用了Di ... -
(第三章 13)克勤克俭用内存——查看内存块
2011-07-22 09:25 143[SECTION .data1] ALIGN 32 ... -
(第三章 12)克勤克俭用内存——显示字符串
2011-07-21 16:25 116DispStr调用方法: [SECTION . ... -
(第三章 11)根据自己内存情况 使用分页机制
2011-06-11 15:51 1476一、查看内存分布情况 设置“页目录表”和“页 ... -
参考博客-还有哪些人也在看这本书
2011-06-10 22:46 1366这位很详细: http://www.cnblogs.com/ ... -
(第三章 10)“代码段间跳转” 和 “访问数据段”
2011-06-10 15:40 1380下面说明代码段和数据段的访问: 一、代码段间跳转 ... -
(第三章 9)通过调用门进行有特权级变换的转移(二)
2011-06-08 11:29 191本文展示《(第三章 9)通过调用门进行有特权级变换的转移(一) ... -
(第三章 9)“调用门” 和 “利用调用门在高低特权级的转移”
2011-06-08 10:34 2686在此之前,先要熟悉汇编指令“长/短jmp”、“长/短c ... -
(第三章 7)LDT
2011-06-06 09:49 1511先展示一下效果图: 直接看代码: ... -
(第三章 6)保护模式下,读写大地址内存 & 从32位保护模式跳回16位实模式(二)
2011-06-06 09:15 1485三、关于保护模式和实 ... -
(第三章 5)保护模式下,读写大地址内存 & 从32位保护模式跳回16位实模式(一)
2011-06-05 13:53 2072一、主要功能 ... -
(第三章 3)数据段/代码段描述符
2011-06-05 11:53 2254一、宏定义和属性常量 (代码段/数据段描述符见P32;门描述 ... -
(第三章 4)A20地址线
2011-06-03 20:43 2068A20地址线困惑我了很久,这篇文章终于揭开了这个谜 ...
相关推荐
#### 一、软盘子系统及软盘结构 **软盘子系统**由三个核心部分组成:软盘、软驱(软盘驱动器)和软盘控制器。 1. **软盘**:主要用于存储数据。它由盘片和保护套组成,其中盘片是以聚酯膜作为基底,并在其表面涂有...
第四章 扩展INT 13H调用简介 扩展INT 13H调用是为了克服基本INT 13H的限制而引入的,它可以处理大于528MB的大容量硬盘,提供更高级的功能,如LBA(逻辑块地址)访问,支持更大的硬盘空间。 第五章 磁盘分区简介 ...
此外,DEBUG还可以用来直接读取和写入软盘上的数据,这在处理特定类型的数据故障或恢复工作时非常有用。 #### 三、DEBUG中的地址表示 在DEBUG中,地址通常采用段地址与段内地址相结合的形式表示。段地址可以通过...
- 至少四组测试数据及其输出结果,确保测试数据完整与严格。 - **附录**: - 带注释的源程序,如提交软盘,则列出文件名清单。 - **参考文献**: - 相关参考资料与文献。 #### 四、具体示例 ##### 示例一:...
《数字电路与逻辑设计》第四章的Part7主要聚焦于随机访问存储器(RAM)和快闪存储器(Flash Memory)这两种重要的半导体存储技术。在深入探讨这些存储器之前,我们先了解一下存储器的基本概念。 存储器是电子设备中...
总的来说,《微机原理与接口技术》这一章深入讲解了DMA技术的工作原理、8237 DMA控制器的特性及其内部结构,以及如何利用这些特性进行数据传输和系统扩展,对于理解和应用微机系统的接口技术具有重要的理论指导意义...
内核被加载后,初始化设备驱动和数据结构,然后通过Ramdisk Word找到根文件系统的位置。 2. **定制Grub引导程序**: 在软盘启动时,Grub作为一个引导程序非常重要。它能够帮助定位内核并提供用户交互界面。Grub...
4. **RTC原理**:理解RTC的工作机制,包括其内部寄存器结构,如何读取和设置时间。 5. **X86体系结构**:熟悉X86架构的中断系统,例如INT 13H中断用于磁盘操作,INT 1CH中断用于获取系统时间。 6. **引导加载程序*...
7. 软盘的存取速度通常比硬盘慢,这是由于硬盘的高速旋转和更先进的数据读取技术。 8. 字处理软件属于应用软件,而不是系统软件。 9. 计算机直接执行的是机器语言程序,这是正确的。 10. 计算机中最小的存储单位...
2. **解析文件信息**: 从目录条目中提取文件的起始簇号,这是文件数据的第一个存储位置。 3. **读取数据**: 从起始簇开始,根据FAT表的指示,按顺序读取后续簇,直到文件结束标志出现。每次读取的大小等于簇的大小。...
软盘数据读取到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 ``` 读取完成后,程序会...
操作是( )。A.只能读不能写 B....28. 软盘加上写保护后,只能读取数据,不能写入或修改数据。 这些题目涉及的知识点广泛,是学习计算机基础的重要组成部分,对于理解计算机工作原理和技术发展有重要作用。
- `MOV AX, 0201`,其中AH=02表示读操作,AL=01表示读取1个扇区。 - `MOV BX, 0200`,设置数据存放的起始地址为200H。 - `MOV CX, 0001`,低六位表示从某头某柱的第几个扇区开始读写,这里设为0001,表示读取第一...
6. **文件的概念**:在计算机科学中,程序、数据及其相关的文档合称为**文件**。这是存储和组织信息的基本单位之一。 7. **计算机系统层次结构**:计算机系统的层次结构中,位于硬件之外的所有层次统称为**软件系统...
在IT领域,软磁盘是一种早期的存储介质,尽管现在已经被更先进的技术如硬盘驱动器、固态硬盘和闪存设备所取代,但了解软磁盘及其相关问题仍然是计算机历史和数据恢复知识的重要组成部分。标题提到的“0道损坏”是指...
1. **电子计算机的诞生**:世界上第一台电子计算机ENIAC(Electronic Numerical Integrator And Computer)诞生于1946年,标志着计算机时代的开始。 2. **数据表示**:对于计算机来说,数据是以二进制(Binary)...
- **第四章:Shell命令集及编程环境** - 基本操作命令 - Shell命令与磁盘分区访问 通过以上内容的学习,学生不仅能够掌握Linux操作系统的理论知识,还能够在实践中提升技能,为将来从事软件工程或计算机相关领域...
28. **软盘写保护**:写保护后,可以读取软盘,但不能写入数据,选项A。 29. **接口适配器**:外部设备需通过接口适配器与主机连接,选项B。 30. **计算机字长**:4个字节的字长意味着CPU一次处理32位二进制数据,...
15. 写保护功能:软盘加上写保护后,只能进行读取操作,不能写入或修改数据。 16. CD-ROM:多媒体计算机的CD-ROM是一种只读光盘,用于存储大量数据,不能被写入或修改。 17. 防止病毒:防止软盘感染病毒的方法包括...