开发学院软件开发汇编语言 汇编仿FDISK及PQMAGIC列出分区逻辑盘符的prw.asm实... 阅读

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

 2007-11-13 09:31:21 来源:WEB开发网   
核心提示:仿98(DOS7.1)的F$.EXE(>512M模式运行),P_QUEST的P$.EXE本文基于486DX2,主板,可带primary(启动)/secondary控制IDE器2,中断14/15,每个IDE,可带master(启动,电缆中)/slave(缆端)(跳线ds插/空)2通道,每通道,可带1台硬盘驱动器,每

仿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,再后,是根目录.

1 2 3 4  下一页

Tags:汇编 FDISK PQMAGIC

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接