当前位置: 代码迷 >> 汇编语言 >> FAT32分区的引导程序,小弟我有点晕呀
  详细解决方案

FAT32分区的引导程序,小弟我有点晕呀

热度:7560   发布时间:2013-02-26 00:00:00.0
FAT32分区的引导程序,我有点晕呀!
7C00   EB58       JMP   7C5A
7C02   90           NOP  

7C5A   FA           CLI  
7C5B   33C9       XOR           CX,CX                 ;【CX=0】
7C5D   8ED1       MOV           SS,CX                 ;【SS=0】
7C5F   BCF87B   MOV           SP,7BF8             ;【SP=7BF8,做为栈顶】
7C62   8EC1       MOV           ES,CX                 ;【ES=0】

7C64   BD7800   MOV           BP,0078             ;【BP=0078,1EH号中断向量的地址】
7C67   C57600   LDS           SI,[BP+00]       ;【取1EH号中断向量入DS:SI   】

7C6A   1E           PUSH         DS                       ;【指向一个11字节的磁盘参数表】
7C6B   56           PUSH         SI                       ;【取到后压入堆栈中保存】  
7C6C   16           PUSH         SS                       ;
7C6D   55           PUSH         BP                       ;【保存地址0000:0078H   】
          此时【SP=7BF8-8=7BF0】

7C6E   BF2205   MOV           DI,0522             ;【DI=0522】
7C71   897E00   MOV           [BP+00],DI       ;【[0000:0078]=0522】
7C74   894E02   MOV           [BP+02],CX       ;【[0000:007A]=0】

7C77   B10B       MOV           CL,0B                 ;【CL=0B】
7C79   FC           CLD                                     ;【清方向位】
7C7A   F3           REPZ                                   ;  
7C7B   A4           MOVSB                                 ;【将磁盘参数表复制到0000:0522H处】

7C7C   8ED9       MOV           DS,CX                 ;【CX=0,DS=0】
7C7E   BD007C   MOV           BP,7C00   ;【BP=7C00】
7C81   C645FE0F     MOV           BYTE   PTR   [DI-02],0F   ;【修改参数表中 "磁头定位时间 "   】
7C85   8B4618         MOV           AX,[BP+18]      
;   【BP=7C00,BP+18,就是取每磁道扇区数给AX=003F(63个扇区)】
7C88   8845F9         MOV           [DI-07],AL     【修改参数表中 "每磁道扇区数】
7C8B   384E40         CMP           [BP+40],CL     【BP=7C00,BP+40,就是磁盘编号,硬盘是80,软盘是00】