汇编仿FDISK及PQMAGIC列出分区逻辑盘符的prw.asm实现

仿98(DOS7.1)的F$.EXE(>512M模式运行),P_QUEST的P$.EXE
  
  本文基于486DX2,主板,可带primary(启动)/secondary控制IDE器2,中断14/15,每个IDE,可带master(启动,电缆中)/slave(缆端)(跳线ds插/空)2通道,每通道,可带1台硬盘驱动器,每驱动器,可带1块NORMAL,LBA,LARGE模式的IDE硬盘.
  
  DOS,98对硬盘,先按IDE,后按m/s,依次编号,不编闲置通道.例如,有3块盘,块1,2在pri_m/s上,块3在sec_cs上,此3块,编为80h~82h.
  
  开机盘的IDE及通道,由BIOS的BOOT SEQ指定.
  
  (1) DOS/98的读写F16/32格式的位置X的Y个连续扇区的BIOS中断13h参数:
  ah的2/3指明读/写,al的低6位指明Y,es:bx指向内存buf首,cl的低6位指明X的扇号sector,最小1,ch,左拼cl第6,7位,齐指X的柱面号cylinder,最小0,dh指明磁头号head,最小0,dl指明软硬盘编号.
  
  IDE原有的NORMAL,BIOS限定柱面数1024,磁头数16,扇区数63,每扇512字节,相乘=容量528MB.用作cmos_chs(cylinder:head:sector)立体寻扇.
  
  LBA,仅磁头数异达255,容量8.4GB
  
  LARGE,柱面数>1024,磁头数16,控制器做柱面数/2,磁头数*2,以适13h.容量2048*16*63*512=1G
  
  周边设定:Block模式加速,PIO(并行I/O接口)模式,影响rate
  
  (2) 针对LBA的扩展13h线性64位lba寻扇:
  
  chs转时,lba=c*sectors_per_cylinder+h*sectors_per_track+(s-1)
  其中,sectors_per_cylinder为每柱面扇数,sectors_per_track为每磁道扇数,因s从1编号,要减1.
  
  互转,见"(7) 文"的chs2lba,lba2chs.
  
  利用extblk块:
  
  extblk  db  16  ;块的字节数(含此字节)
      db  0
  sec_tot dw  1    指明Y个扇区
  buf_off dw  0   ;内存buf偏移
  buf_seg dw  0   ;buf段值
  lbal    dw  0   ;lba低双字低字
  lbah    dw  0   ;lba低双字高字
          dd  0   ;lba高双字
  
  读/写时,ah=42h/43h,多ds:si指向extblk
  
  扩展i13的BIOS支持性(柱数<1024,先用chs),及导出硬盘柱数,头数,每道扇数,算法见"(7) 文"的h_geo
  
  (3) 硬盘分区:
  
  每硬盘,最多划为DOS主分区,DOS扩展分区,非DOS分区之1的4区,述于16字节/区的64字节分区表(dpt):
  
  bootON    db 0    80H/0,是活跃/不活跃.
      db ?    分区启动chs的头号
      dw ?    低6位:扇区,低第6,7位与高字节,'齐指'柱面号
  volume    db 0    分区标识值
      db ?    结束chs
      dw ?
  Front    dd 0    此分区之前(称隐藏)扇区数.INT_25H_dx=1,是在其后读逻辑首扇
  In    dd 0    此分区所含扇区数
  
  MBR(F$制的1扇盘主引导记录,软盘0:0:1,硬盘DOS分区的首扇,即INT_25H_扇号dx=1),转cpu给Format.com制的驻有OS的活跃主分区引导记录(OBR).
  
  主分区的保留区(引导扇区PBS囿其内,软盘仅藏1区)之后,常是2份FAT,再后,是根目录.

时间: 2024-09-20 00:00:33

汇编仿FDISK及PQMAGIC列出分区逻辑盘符的prw.asm实现的相关文章

Android仿微信雷达辐射搜索好友(逻辑清晰实现简单)_Android

不知不觉这个春节也已经过完了,遗憾家里没网,没能及时给大家送上祝福,今天回到深圳,明天就要上班了,小伙伴们是不是和我一样呢?今天讲的是一个大家都见过的动画,雷达搜索好友嘛,原理也十分的简单,你看完我的分析,也会觉得很简单了,国际惯例,无图无真相,我们先看看效果图,对了,真 测试机送人了,所讲这段时间应该一直用模拟器显示吧! 仿微信雷达扫描,仿安卓微信.云播雷达扫描动画效果点击中间的黑色圆圈开始扫描动画,再次点击复位,需要这种效果的朋友可以自己下载看一下. 效果图如下所示: 这个界面相信大家都认识

Android仿微信雷达辐射搜索好友(逻辑清晰实现简单)

不知不觉这个春节也已经过完了,遗憾家里没网,没能及时给大家送上祝福,今天回到深圳,明天就要上班了,小伙伴们是不是和我一样呢?今天讲的是一个大家都见过的动画,雷达搜索好友嘛,原理也十分的简单,你看完我的分析,也会觉得很简单了,国际惯例,无图无真相,我们先看看效果图,对了,真 测试机送人了,所讲这段时间应该一直用模拟器显示吧! 仿微信雷达扫描,仿安卓微信.云播雷达扫描动画效果点击中间的黑色圆圈开始扫描动画,再次点击复位,需要这种效果的朋友可以自己下载看一下. 效果图如下所示: 这个界面相信大家都认识

LVM逻辑盘卷管理实例

Lvm是逻辑盘卷管理(logical volume manager)的简称,它是linux环境下对磁盘分区的进行管理的一直机制,是建立在硬盘和分区之上的逻辑层,来为文件系统屏蔽下层的磁盘分区布局,从而提高磁盘分区管理的灵活性. 可以看到物理层位于最底层,它是包含lvm相关参数的物理层: 逻辑卷是建立在卷组之上,从逻辑卷组中切出来,直接格式化后能使用的卷区. 创建卷区的步骤: Fdisk /dev/sdb  //建立LVM类型分区 Pvcreate /dev/sdb1  //建立物理卷 Vgcre

Linux 系统逻辑盘卷管理LVM 详细介绍

转 Linux 系统逻辑盘卷管理LVM 详细介绍一.前言每个Linux 使用者在安装Linux 时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值.因为如果估计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统.清除硬盘.重新对硬盘分区,然后恢复数据到新分区.虽然现在有很多动态调整磁盘的工具可以使用,例如Partation Magic 等等,但是它并不能完全解决问题,因为某

Linux操作系统逻辑盘卷管理LVM详解

摘要:Linux用户安装Linux操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间.而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具(比如Patition Magic等),但这都只是暂时解决办法,没有根本解决问题.随着Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解,本文就深入讨论LVM技术,使得用户在无需停机的情况下方便地调整各个分区大小. 一.前言 每个Linux使用者在安装Linux时都会遇到这样的困

win7给硬盘分区c盘太大怎么办?

  win7给硬盘分区c盘太大怎么办? 1.在桌面计算机上右键管理; 2.左键单击左边磁盘管理; 3.右击C盘,选择压缩卷; 4.最下面的一个是C盘的大小,输入的地方是输入剩余C盘的大小; 5.C盘压缩成功; 6.设置分区,可以根据自己的需要,划分多个分区; 7.点击下一步; 8.输入分区大小; 9.选择新分区盘符,默认D盘; 10.执行快速格式化; 11.选择完成; 12.分区完成.

如何为win7电脑隐藏的分区添加一个盘符标志?

  什么是盘符标志,其实就是大家经常看到的C盘.D盘.E盘这样的标志,一般来说,每台电脑都存在3-5个分区,那么什么又是win7旗舰版的隐藏分区呢?记得小编在之前的文章中曾经介绍过的吗,每台电脑都会生成一个100M的隐藏分区,用于存储一些电脑重要的文件,因为里面的文件都是隐藏文件,所以这个分区也就是隐藏分区了,今天小编就为大家介绍一下小技巧,那就是为这个隐藏分区也分配一个盘符标志! 1.首先,咱们点击开始菜单,进入到控制面板的界面. 2.在控制面板中,咱们先将查看方式更改为大图标,这样可以方便寻

windows-如何用C++ 向Windows 无盘符的分区中写入数据

问题描述 如何用C++ 向Windows 无盘符的分区中写入数据 我现在想要向Windows 8.1的UEFI保留分区(ESP分区)中写入数据,但是ESP分区默认是没有挂在的,那么要怎样的才能向该分区中写入数据呢?还望各位赐教,谢谢 解决方案 貌似你是想写自己的bootloader 你需要EFI Development Kit (EDK) 和 EFI Toolkithttp://sourceforge.net/projects/efidevkit/http://tianocore.sourcef

NSIS:获取硬盘中容量最大的分区盘符

原文 NSIS:获取硬盘中容量最大的分区盘符 我们在安装一些在线视频软件比如迅雷看看时,会发现他们的安装程序会自动判断当前系统中容量最大的分区,以便在其中创建数据缓冲下载的文件夹,这种功能如果实现呢,下面我们用NSIS来获取一下硬盘中容量最大的分区盘符. 01 !include "FileFunc.nsh" 02 !include "LogicLib.nsh" 03   04 OutFile "Demo.exe" 05 SilentInstall