硬盘结构简介http://www.x86asm.com/Print.asp?BoardID=7&ArticleID=66

Claude Code底层架构全链路解析:从VS Code插件到模型服务的七层穿透 AI编程助手已超越简单代码补全,演进为深度集成开发环境的智能协作者。其核心技术本质是客户端轻量分析、服务端分层编排与双向增量同步协议的协同体系。理解AST缓存机制、HTTP/2流式响应、设备指纹鉴权及动态模型切片等原理,不仅能诊断响应延迟、上下文丢失等典型问题,更能支撑私有化部署、性能调优与企业级集成。本文聚焦Claude Code真实调试实践,揭示其如何通过Rust本地分析器、影子进程代理、BISP协议与知识图谱符号链接,在VS Code中实现毫秒级语义感知与跨文件推理能力。 阅读详情
第一部分 简 介

一. 硬盘结构简介

  1. 硬盘参数释疑

    到目前为止,人们常说的硬盘参数还是古老的 CHS (Cylinder/Head/Sector)参数。那么为什么要使用这些参数,它们的意义是什么?它们的取值范围是什么?
    很久以前(long long ago ...),硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。也就是硬盘盘片的每一条磁道都具有相同的扇区数。由此产生了所谓的3D参数 (Disk Geometry)。即磁头数(Heads),柱面数(Cylinders),扇区数(Sectors),以及相应的寻址方式。
    其中:

      磁头数(Heads) 表示硬盘总共有几个磁头,也就是有几面盘片,最大为 255 (用 8 个二进制位存储);
      柱面数(Cylinders) 表示硬盘每一面盘片上有几条磁道,最大为 1023(用 10 个二进制位存储);
      扇区数(Sectors) 表示每一条磁道上有几个扇区, 最大为 63 (用 6个二进制位存储)。
      每个扇区一般是 512个字节,理论上讲这不是必须的,但好象没有取别的值的。

    所以磁盘最大容量为:
       255 * 1023 * 63 * 512 / 1048576 = 8024 GB ( 1M = 1048576 Bytes ) 或硬盘厂商常用的单位:
       255 * 1023 * 63 * 512 / 1000000 = 8414 GB ( 1M = 1000000 Bytes )

    在 CHS 寻址方式中,磁头,柱面,扇区的取值范围分别为 0到 Heads - 1, 0到 Cylinders - 1,1到 Sectors (注意是从1开始)。

  2. 基本 Int 13H 调用简介

    BIOS Int 13H 调用是 BIOS 提供的磁盘基本输入输出中断调用,它可以完成磁盘(包括硬盘和软盘)的复位,读写,校验,定位,诊断,格式化等功能。它使用的就是 CHS 寻址方式,因此最大识能访问 8 GB 左右的硬盘( 本文中如不作特殊说明,均以 1M = 1048576 字节为单位)。

  3. 现代硬盘结构简介

    在老式硬盘中,由于每个磁道的扇区数相等,所以外道的记录密度要远低于内道,因此会浪费很多磁盘空间 (与软盘一样)。为了解决这一问题,进一步提高硬盘容量,人们改用等密度结构生产硬盘。也就是说,外圈磁道的扇区比内圈磁道多。采用这种结构后,硬盘不再具有实际的3D参数,寻址方式也改为线性寻址,即以扇区为单位进行寻址。
    为了与使用3D寻址的老软件兼容 (如使用BIOS Int13H接口的软件),在硬盘控制器内部安装了一个地址翻译器,由它负责将老式3D参数翻译成新的线性参数。这也是为什么现在硬盘的3D参数可以有多种选择的原因 (不同的工作模式,对应不同的3D参数,如 LBA,LARGE,NORMAL)。

  4. 扩展 Int 13H 简介

    虽然现代硬盘都已经采用了线性寻址,但是由于基本 Int 13H 的制约,使用 BIOS Int 13H 接口的程序,如 DOS 等还只能访问 8 G 以内的硬盘空间。为了打破这一限制,Microsoft 等几家公司制定了扩展 Int 13H 标准(Extended Int13H),采用线性寻址方式存取硬盘,所以突破了 8 G 的限制,而且还加入了对可拆卸介质 (如活动硬盘) 的支持。


二. Boot Sector 结构简介

  1. Boot Sector 的组成

    Boot Sector 也就是硬盘的第一个扇区,它由 MBR (Master Boot Record),DPT (Disk Partition Table) 和 Boot Record ID 三部分组成。
    MBR 又称作主引导记录占用 Boot Sector 的前 446 个字节 ( 0 to 0x1BD ),存放系统主引导程序 (它负责从活动分区中装载并运行系统引导程序)。
    DPT 即主分区表占用 64 个字节 (0x1BE to 0x1FD),记录了磁盘的基本分区信息。主分区表分为四个分区项,每项 16 字节,分别记录了每个主分区的信息(因此最多可以有四个主分区)。
    Boot Record ID 即引导区标记占用两个字节 (0x1FE and 0x1FF),对于合法引导区,它等于 0xAA55,这是判别引导区是否合法的标志。
    Boot Sector 的具体结构如下图所示:


Offset 0000H


Offset 01BDH
 
Offset 01BEH

Offset 01CDH 
Offset 01CEH

Offset 01DDH 
Offset 01DEH

Offset 01EDH 
Offset 01EEH

Offset 01FDH 
Offset 01FEH

Offset 01FFH 
 

Master Boot Record


主引导记录(446字节)


 

分区信息1

 

分区信息2

 

分区信息3

 

分区信息4

 

校验字0xAA55


 


  2. 分区表结构简介

    分区表由四个分区项构成,每一项的结构如下:

        BYTE State       : 分区状态,0 = 未激活,0x80 = 激活 (注意此项)
        BYTE StartHead   : 分区起始磁头号
        WORD StartSC     : 分区起始扇区和柱面号,底字节的低6位为扇区号,高2位为柱面号的第 9,10位,高字节为柱面号的低 8位
        BYTE Type        : 分区类型,如 0x0B = FAT32,0x83 = Linux 等,00表示此项未用(注1)
        BYTE EndHead     : 分区结束磁头号
        WORD EndSC       : 分区结束扇区和柱面号,定义同前
        DWORD Relative   : 在线性寻址方式下的分区相对扇区地址 (对于基本分区即为绝对地址)
        DWORD Sectors    : 分区大小 (总扇区数)
    注意:在 DOS / Windows 系统下,基本分区必须以柱面为单位划分( Sectors * Heads 个扇区),如对于 CHS 为 764/255/63 的硬盘,分区的最小尺寸为 255 * 63 * 512 / 1048576 = 7.844 MB。

  3. 扩展分区简介

    由于主分区表中只能分四个分区,无法满足需求,因此设计了一种扩展分区格式。基本上说,扩展分区的信息是以链表形式存放的,但也有一些特别的地方。
    首先,主分区表中要有一个基本扩展分区项,所有扩展分区都隶属于它,也就是说其他所有扩展分区的空间都必须包括在这个基本扩展分区中。对于DOS / Windows 来说,扩展分区的类型为 0x05。
    除基本扩展分区以外的其他所有扩展分区则以链表的形式级联存放,后一个扩展分区的数据项记录在前一个扩展分区的分区表中,但两个扩展分区的空间并不重叠。
    扩展分区类似于一个完整的硬盘,必须进一步分区才能使用。但每个扩展分区中只能存在一个其他分区。此分区在 DOS/Windows 环境中即为逻辑盘。因此每一个扩展分区的分区表 (同样存储在扩展分区的第一个扇区中)中最多只能有两个分区数据项(包括下一个扩展分区的数据项)。
    扩展分区和逻辑盘关系请参考 注1。


第二部分 技术资料

第一章 扩展 Int13H 技术资料

一. 简介

    设计扩展 Int13H 接口的目的是为了扩展 BIOS 的功能,使其支持多于1024柱面的硬盘,以及可移动介质的锁定,解锁及弹出等功能。

二. 数据结构

  1. 数据类型约定
        BYTE  1 字节整型 (  8 位 )
        WORD  2 字节整型 ( 16 位 )
        DWORD 4 字节整型 ( 32 位 )
        QWORD 8 字节整型 ( 64 位 )

  2. 磁盘地址数据包 Disk Address Packet (DAP)
    DAP 是基于绝对扇区地址的,因此利用 DAP,Int13H 可以轻松地逾越 1024 柱面的限制,因为它根本就不需要 CHS 的概念。

        DAP 的结构如下:
          struct DiskAddressPacket
          {
             BYTE PacketSize;    // 数据包尺寸(16字节)
             BYTE Reserved;      // ==0
             WORD BlockCount;    // 要传输的数据块个数(以扇区为单位)
             DWORD BufferAddr;   // 传输缓冲地址(segment:offset)
             QWORD BlockNum;     // 磁盘起始绝对块地址
          };

    PacketSize 保存了 DAP 结构的尺寸,以便将来对其进行扩充。在目前使用的扩展 Int13H 版本中 PacketSize 恒等于 16。如果它小于16,扩展 Int13H 将返回错误码( AH=01,CF=1 )。
    BlockCount 对于输入来说是需要传输的数据块总数,对于输出来说是实际传输的数据块个数。BlockCount = 0 表示不传输任何数据块。
    BufferAddr 是传输数据缓冲区的 32 位地址 (段地址:偏移量)。数据缓冲区必须位于常规内存以内(1M)。
    BlockNum 表示的是从磁盘开始算起的绝对块地址(以扇区为单位),与分区无关。第一个块地址为 0。一般来说,BlockNum 与 CHS 地址的关系是:

        BlockNum = ( cylinder * NumberOfHeads + head ) * SectorsPerTrack + sector - 1;

    其中 cylinder,head,sector 是 CHS 地址,NumberOfHeads 是磁盘的磁头数,SectorsPerTrack 是磁盘每磁道的扇区数。
    也就是说 BlockNum 是沿着 扇区->磁道->柱面 的顺序记数的。这一顺序是由磁盘控制器虚拟的,磁盘表面数据块的实际排列顺序可能与此不同(如为了提高磁盘速度而设置的间隔因子将会打乱扇区的排列顺序)。

  3. 驱动器参数数据包 Drive Parameters Packet
    驱动器参数数据包是在扩展 Int13H 的取得驱动器参数子功能调用中使用的数据包。格式如下:

      struct DriveParametersPacket
      {
         WORD InfoSize;          // 数据包尺寸 (26 字节)
         WORD Flags;             // 信息标志
         DWORD Cylinders;        // 磁盘柱面数
         DWORD Heads;            // 磁盘磁头数
         DWORD SectorsPerTrack;  // 每磁道扇区数
         QWORD Sectors;          // 磁盘总扇区数
         WORD SectorSize;        // 扇区尺寸 (以字节为单位)
      };

    信息标志用于返回磁盘的附加信息,每一位的定义如下:

       0 位:
          0 = 可能发生 DMA 边界错误
          1 = DMA 边界错误将被透明处理
       如果这位置 1,表示 BIOS 将自动处理 DMA 边界错误,也就是说错误代码 09H 永远也不会出现.

       1 位:
          0 = 未提供 CHS 信息
          1 = CHS 信息合法
       如果块设备的传统 CHS 几何信息不适当的话,该位将置 0.

       2 位:
          0 = 驱动器不可移动
          1 = 驱动器可移动

       3 位: 表示该驱动器是否支持写入时校验.

       4 位:
          0 = 驱动器不具备介质更换检测线
          1 = 驱动器具备介质更换检测线

       5 位:
          0 = 驱动器不可锁定
          1 = 驱动器可以锁定
       要存取驱动器号大于 0x80 的可移动驱动器,该位必须置 1(某些驱动器号为 0 到 0x7F 的设备也需要置位)

       6 位:
          0 = CHS 值是当前存储介质的值 (仅对于可移动介质),如果驱动器中有存储介质,CHS 值将被返回.
          1 = CHS 值是驱动器支持的最大值 (此时驱动器中没有介质).

       7 - 15 位: 保留,必须置 0.

三. 接口规范

    1. 寄存器约定
       在扩展 Int13H 调用中一般使用如下寄存器约定:

       ds:si ==> 磁盘地址数据包( disk address packet )
       dl ==> 驱动器号
       ah ==> 功能代码 / 返回码

    在基本 Int13H 调用中,0 - 0x7F 之间的驱动器号代表可移动驱动器0x80 - 0xFF 之间的驱动器号代表固定驱动器。但在扩展 Int13H 调用中0x80 - 0xFF 之间还包括一些新出现的可移动驱动器,比如活动硬盘等。这些驱动器支持先进的锁定,解锁等功能。
    ah 返回的错误码除了标准 Int13H 调用规定的基本错误码以外,又增加了以下错误码:

        B0h 驱动器中的介质未被锁定
        B1h 驱动器中的介质已经锁定
        B2h 介质是可移动的
        B3h 介质正在被使用
        B4h 锁定记数溢出
        B5h 合法的弹出请求失败

    2. API 子集介绍
       1.x 版的扩展 Int13H 调用中规定了两个主要的 API 子集。

    第一个子集提供了访问大硬盘所必须的功能,包括 检查扩展 In13H是否存在( 41h ),扩展读( 42h ),扩展写( 43h ),校验扇区( 44h ),扩展定位( 47h ) 和 取得驱动器参数( 48h )。  
    第二个子集提供了对软件控制驱动器锁定和弹出的支持,包括 检查扩展Int13H 是否存在( 41h ),锁定/解锁驱动器( 45h ),弹出驱动器( 46h ),取得驱动器参数( 48h ),取得扩展驱动器改变状态( 49h ),int 15h。  
    如果使用了调用规范中不支持的功能,BIOS 将返回错误码 ah = 01h,CF = 1。  


    3. API 详解

1) 检验扩展功能是否存在
  入口:
    AH = 41h
    BX = 55AAh
    DL = 驱动器号
返回:
  CF = 0
    AH = 扩展功能的主版本号
    AL = 内部使用
    BX = AA55h
    CX = API 子集支持位图
  CF = 1
    AH = 错误码 01h,无效命令

    这个调用检验对特定的驱动器是否存在扩展功能。如果进位标志置 1则此驱动器不支持扩展功能。如果进位标志为 0,同时 BX = AA55h,则存在扩展功能。此时 CX 的 0 位表示是否支持第一个子集,1位表示是否支持第二个子集.
    对于 1.x 版的扩展 Int13H 来说,主版本号 AH = 1。AL 是副版本号,但这仅限于 BIOS 内部使用,任何软件不得检查 AL 的值。  

2) 扩展读
  入口:
    AH = 42h
    DL = 驱动器号
    DS:DI = 磁盘地址数据包(Disk Address Packet)

  返回:
    CF = 0,AH = 0 成功
    CF = 1,AH = 错误码

    这个调用将磁盘上的数据读入内存。如果出现错误,DAP 的 BlockCount项中则记录了出错前实际读取的数据块个数。  

3) 扩展写
  入口:
    AH = 43h
    AL
       0 位 = 0 关闭写校验
              1 打开写校验
       1 - 7 位保留,置 0
    DL = 驱动器号
    DS:DI = 磁盘地址数据包(DAP)
  返回:
    CF = 0,AH = 0 成功
    CF = 1,AH = 错误码

    这个调用将内存中的数据写入磁盘。如果打开了写校验选项,但 BIOS不支持,则会返回错误码 AH = 01h,CF = 1。功能 48h 可以检测BIOS是否支持写校验。
    如果出现错误,DAP 的 BlockCount 项中则记录了出错前实际写入的数据块个数。  

4) 校验扇区
  入口:
    AH = 44h
    DL = 驱动器号
    DS:DI = 磁盘地址数据包(Disk Address Packet)

  返回:
    CF = 0,AH = 0 成功
    CF = 1,AH = 错误码
    这个调用校验磁盘数据,但并不将数据读入内存.如果出现错误,DAP 的BlockCount 项中则记录了出错前实际校验的数据块个数。  

5) 锁定/解锁驱动器
  入口:
    AH = 45h
    AL
       = 0 锁定驱动器
       = 1 驱动器解锁
       = 02 返回锁定/解锁状态
       = 03h-FFh - 保留
    DL = 驱动器号

  返回:
    CF = 0,AH = 0 成功
    CF = 1,AH = 错误码

    这个调用用来缩定指定驱动器中的介质.
    所有标号大于等于 0x80 的可移动驱动器必须支持这个功能。如果在支持可移动驱动器控制功能子集的固定驱动器上使用这个功能调用,将会成功返回。
    驱动器必须支持最大255次锁定,在所有锁定被解锁之前,不能在物理上将驱动器解锁。解锁一个未锁定的驱动器,将返回错误码 AH= B0h。如果锁定一个已锁定了255次的驱动器,将返回错误码 AH = B4h。
    锁定一个没有介质的驱动器是合法的。  

6) 弹出可移动驱动器中的介质
  入口:
    AH = 46h
    AL = 0 保留
    DL = 驱动器号

  返回:
    CF = 0,AH = 0 成功
    CF = 1,AH = 错误码

    这个调用用来弹出指定的可移动驱动器中的介质.
    所有标号大于等于 0x80 的可移动驱动器必须支持这个功能。如果在支持可移动驱动器控制功能子集的固定驱动器上使用这个功能调用,将会返回错误码 AH = B2h (介质不可移动)。如果试图弹出一个被锁定的介质将返回错误码 AH = B1h (介质被锁定)。
    如果试图弹出一个没有介质的驱动器,则返回错误码 Ah = 31h (驱动器中没有介质)。
    如果试图弹出一个未锁定的可移动驱动器中的介质,Int13h会调用 Int15h(AH = 52h) 来检查弹出请求能否执行。如果弹出请求被拒绝则返回错误码(同Int15h)。如果弹出请求被接受,但出现了其他错误,则返回错误码 AH = B5h。  

7) 扩展定位
  入口:
    AH = 47h
    DL = 驱动器号
    DS:DI = 磁盘地址数据包(Disk Address Packet)

  返回:
    CF = 0,AH = 0 成功
    CF = 1,AH = 错误码

    这个调用将磁头定位到指定扇区。  

8) 取得驱动器参数
  入口:
    AH = 48h
    DL = 驱动器号
    DS:DI = 返回数据缓冲区地址

  返回:
    CF = 0,AH = 0 成功
    CF = 1,AH = 错误码

    这个调用返回指定驱动器的参数。  

9) 取得扩展驱动器介质更换检测线状态
  入口:
    AH = 49h
    DL = 驱动器号

  返回:
    CF = 0,AH = 0 介质未更换
    CF = 1,AH = 06h 介质可能已更换

    这个调用返回指定驱动器的介质更换状态.
    这个调用与 Int13h AH = 16h 子功能调用相同,只是允许任何驱动器标号。如果对一台支持可移动介质功能子集的固定驱动器使用此功能,则永远返回 CF = 0,AH = 0。
    简单地将可移动介质锁定再解锁就可以激活检测线,而无须真正更换介质。  

10) Int 15h 可移动介质弹出支持
  入口:
    AH = 52h
    DL = 驱动器号

  返回:
    CF = 0,AH = 0 弹出请求可能可以执行
    CF = 1,AH = 错误码 B1h 或 B3h 弹出请求不能执行

    这个调用是由 Int13h AH=46h 弹出介质功能调用内部使用的。  

U盘启动以及int 13h扩展读取U盘内容 从U盘启动有三种方式:USB-HDD, USB-CDROM, USB-FDD,其中USB-FDD格式较老,同时兼容性存在一定问题,目前也仅仅针对USB-HDD以及USB-CDROM两种方式进行了研究。   一、从U盘启动 1、USB-HDD方式简介 USB-HDD方式是将U盘格式化成硬盘格式,具有与硬盘相同形式的MBR,只需要将启动引导代码写入USB-HDD格式U盘的MBR,同时在启动时, 阅读详情

相关推荐

Cursor插件安装CodeX保姆级教程:从登录到调整面板布局,一步不落

本文提供Cursor编辑器安装CodeX插件的详细教程,涵盖从登录到调整面板布局的全流程。通过优化界面布局和配置参数,帮助开发者提升编码效率,特别适合需要智能代码补全的编程场景。

weixin_42648844的博客 4266

扩展int13使用详解

BIOS 中断 扩展int13使用详解说明参考

Python爬虫实战:使用Scrapy+Playwright高效获取电力市场数据

本文将详细介绍如何使用Python构建一个高效的电力市场数据爬虫系统。我们将结合Scrapy框架和Playwright浏览器自动化工具,解决电力市场网站常见的反爬机制,实现数据的稳定抓取。文章包含完整的项目搭建流程、代码实现、数据处理方案以及部署建议,帮助读者掌握现代爬虫开发的核心技术。关键词:Python爬虫、Scrapy、Playwright、电力市场、数据采集、反爬对策python复制下载# 基本字段region = scrapy.Field() # 区域。

2201_76125261的博客 1823

调用百度API实现人脸识别

人脸识别,听着很高级,但实际上它确实很高级。不过对于我们开发人员来说,我们大部分人都是拿来主义。这次展示的是调用百度人脸识别API进行人脸信息分析,笔者试了下,发现还是挺准确的,而且代码量很少才8行。(用的python,如果用java铁定不止)。下面来看步骤: 第一步:用你的百度账号登陆百度云管理中心,找到人脸识别后,进去创建应用。这个就不细说啦。 第二步:根据百度分配给你的API Key和Se...

yiwuxia23的博客 4万+

INT 13h BIOS读取磁盘

容量: 一张软盘有80个柱面、2个磁头、18个扇区 柱面:0~79 磁头:0~1 扇区:1~18 读盘的顺序: 先读满扇区,扇区满后切换磁头,磁头满后切换柱面 磁盘操作方式: AH=00h 复位磁盘驱动器。 AH=01h 检查磁盘驱动器状态。 AH=02h 读扇区。 AH=03h 写扇区。 AH=04h 校验扇区。 AH=05h 格式化磁道。 AH=08h 获取驱动器参数。 AH=09h 初始化硬盘驱动器参数。 AH=0Ch 寻道。 AH=0Dh 复位硬盘控制器。 AH=15h 获取驱动器类型。 AH=1.

lzfshub 1193

babyos (三)——利用BIOS INT 0x13读取软盘

注:以下程序为原创,若发现任何BUG,欢迎指正;若有问题,欢迎交流;权利归原作者所有,若转载,请注明出处;若能有益于一二访客,幸甚。 昨天学习了VGA显示的一些东西,今天准备学习一下读取软盘的知识。 1.babyos将使用的引导过程 1)系统上电或reset时,处理器执行一些初始化,CPU处于实模式 2)处理器会执行一个位于已知位置处的代码,PC中这个位置位于BIOS,它保存在主板上的

孤舟钓客 8935

扩展int13h调用详解(修正)

扩展int13h调用详解(修正)   作者:不详    文章来源:未知    点击数: 3600    更新时间:2004-05-16

Hi, CT here! 1214

MBR结构&扩展int13h调用详解

       

todototry的专栏 3747

支持FAT32和NTFS的引导扇区源码http://www.x86asm.com/DisplayArticle.asp?BoardID=4&ArticleID=148

支持FAT32和NTFS的引导扇区源码,NASM汇编代码。很不错的源码,可以运行.....点击下载 

xu的blog 2101

note

CPU,此处CPU与BL芯片断开,没有连背光芯片。屏,此处屏与BL芯片断开,没有连背光芯片。虽然signal函数更简单些。行 3744: 07-22 23:56:01.139 <6>[ 5.577037][ T919] [2024:07:22 15:55:51](7)[919:modprobe][drm] [lcdkit /I]: type:66, name:[qcom,mdss-dsi-apl-bl-mode-off-command], length:16, pkt-count=1。

m0_73462935的博客 8万+

关于INT13H函数对U盘的读写

在《30天自制操作系统》中,作者使用软盘作为操作系统存储介质进行操作系统的编写讲解。但目前计算机设备都已基本放弃软盘支持,虽然依然可以在虚拟机上进行模拟练习,始终还是希望有一个可以真正能在物理设备上驱动安装的系统。 目前常用的移动介质基本都是U盘,所以我开始尝试用U盘开始学习。但在进行存储读写时,就出现了问题。因为U盘的存储结构和软盘是有区别的。而且,现在多数都使用FAT32格式,那么对于MBR

chl290115231的专栏 3784

扩展int 13H/调用规范 /大硬盘读写中断/FAT NTFS文件结构

 第一部分 简 介一. 硬盘结构简介1. 硬盘参数释疑到目前为止,人们常说的硬盘参数还是古老的 CHS (Cylinder/Head/Sector)参数。那么为什么要使用这些参数,它们的意义是什么?它们的取值范围是什么?很久以前(long long ago ...),硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。也就是硬盘盘片的每一条磁道都具有相同的扇区数。由此产生了所谓的3D参数

Linyee编程专栏 4320

windows 7 的 MBR 分析

本文摘自:http://www.mouseos.com/win7/mbr.html 前话:   引导磁盘的 MBR 由 int 0x19 加载到 0x7c00,int 0x19 最后的工作是跳到 0x7c00 执行。   一、 我的 bochs 上的 windows 7disk images 介绍   在 bochs 上,我为 windows 7

无本之木 2301

MBR的反编译程序

本文是介绍MBR的反编译程序的。MBR是放在硬盘的0柱面,0磁头(head),1扇区的 那一段区。MBR是由FDISK程序创建的。所有操作系统的FDISK程序都会创建类似的MBR 记录。MBR是多个分区的前提,每个MBR中包括了四个分区表记录。在您的计算机加电 之后,INT19被调用了。一般来说,INT19先从第一个软盘驱动器中读启动扇区记录。 如果在软盘中找到了启动的扇区,那么这个扇区的数据就被

jxfgh的专栏 1799

MBR-主引导记录

主引导记录(MBR),也被称为主引导扇区,是计算机开机以后访问硬盘时所必须要读取的第一个扇区。在深入讨论主引导扇区内部结构的时候,有时也将其开头的446字节内容特指为“主引导记录”(MBR),其后是4个16字节的“磁盘分区表”(DPT),以及2字节的结束标志(55AA)。因此,在使用“主引导记录”(MBR)这个术语的时候,需要根据具体情况判断其到底是指整个主引导扇区,还是主引导扇区的前446字节。主引导扇区记录着硬盘本身的相关信息以及硬盘各个分区的大小及位置信息。

顺其自然~专栏 1388

int 0x13 的扩展读(ah = 0x42)

原文链接:http://www.mouseos.com/win7/int_0x13.html#42 1、 int 0x13 的扩展读(ah = 0x42) int 0x13 的 0x42 号功能从磁盘读 n 个 sectors 到 buffer 中。 入口参数:ah = 0x42, dl = 磁盘号(0x80 为硬盘), ds:si = buffer 读入的 buffer

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 3360

BIOS 扩展 INT 13

上篇知道,通过BIOS的INT 13中断服务程序,可以访问磁盘,参数是读取扇区的起始磁道号、磁头号、扇区号,读取的扇区个数,缓冲区位置等。 由于原因: BIOS通过USB总线(2.0的是通过EHCI USB)向USB存储设备发送UFI指令来和它进行交流的。其中MODE SENSE Command(5AH)就是你所说的媒体介质、模式检测功能,在返回的数据包中包含了一个Media Type and...

weixin_30689307的博客 332

中断INT 13H的扩展功能

中断INT 13H的扩展功能    由于旧有的INT 13H中断只能采用10位二进制来表示磁道,所以对于大于8.4G的硬盘它已不能完全读写了。扩展INT 13H又称为INT 13 Extension APIs,它主要就是用来对超过1024个磁道的硬盘进行读写的。 1.数据结构(Data Structure) 该数据结构是提供给扩展INT 13H使用的,它是建立在逻辑扇号之上的,具

startexcel的专栏 4730

操作系统学习7 x86架构使用INT13中读取软盘数据

x86架构使用INT13中断读取软盘数据

猿来这样-谢厂节的博客 2213

关于INT13

基本INT13H中断,实际上就是早期的INT13H中断。后来随着 硬盘 容量的快速增长,INT13H中断已不适应,于是技术人员又设计了扩展INT13H中断。为了与后者便于区分,所以在前面冠以“基本”二字。 现在介绍两种调用基本INT13H中断读扇区数据的方法,一种是在汇编语言里调用,另一种是在C语言里调用。 介绍在汇编语言里的调用方法,可为以后学习扩展INT13H中断的调用打下基础,形成一个由浅入深、循序渐进的过程。 一般情况下,在工具程序和应用软件里调用基本INT...

weixin_46273733的博客 1035

基于CNN+Transformer的图像质量评估python源码+项目说明(如清晰度评分).zip

基于CNN+Transformer的图像质量评估python源码+项目说明(如清晰度评分).zip【备注】1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。欢迎下载!欢迎交流学习!不清楚的可以私信问我!基于CNN+Transformer的图像质量评估python源码+项目说明(如清晰度评分).zip无关美学特征,依据清晰度等进行评分主要是在CNN中间层,引入Transformer来学习更多的全局特征背景在各种图像数据不断生成的生活中,人们需要在大量的图像中挑选出可以使用的、符合自己要求的图像,使用算法/深度学习来解决,可以缓解人力不足的问题。数据集图像质量评估数据集有着许多公开数据,这里采用公开数据进行实验。需要下载相应地公开数据才能使用LIVE数据集KONIQ数据集CSIQ数据集LIVEC数据集BID数据集模型回归预测模型,通过对CNN引入Transformer来提升模型性能。CNN对于局部视野有着良好的性能,但是图像的评分不仅仅依据局部内容,也需要对整体内容进行学习。因此通过Transformer加入更多的全局特征来提升模型性能。优化器采用的Adam优化器,方便训练模型依赖pytorch模型运行```nohup python train.py --dataset=livec --train_test_num=5 --cudas=0 --use_seed --random_single > /dev/null 2> e.txt &```

上一篇: Windows下读取Linux分区的免费工具——WinAllFS http://www.lirui.name/post/63.html
下一篇: 支持FAT32和NTFS的引导扇区源码http://www.x86asm.com/DisplayArticle.asp?BoardID=4&ArticleID=148
chief1985
博客等级 码龄21年 1545粉丝 879原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值