论坛风格切换切换到宽版
  • 625阅读
  • 0回复

[问题求助]grub comments [复制链接]

上一主题 下一主题
 
发帖
2053
C币
-60690
威望
400
贡献值
1
银元
0
铜钱
4618
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
#define .ASM_FILE    美容
#include    
#include STAG.E1_5    健康
#incl.ude "stage2_size.h"             电子
#endif
#ifdef STAGE.1_5.
#  define ABS(x) (x-_start + 0x2.00.0)教育
else
# . define. ABS(x) (x-_start + 0x8000).
#endif
#define MSG m.ovw $ABS(x.), %si; call message学习
    .file  .  "start.S".
    .text
    .code16
    .global    ._start             电子
/* 0x8000 */
_start:
    /*
     * _sta.rt is loaded at 0x8000 and .is jumped to with             电子
  . .  * CS:IP 0:0x8000 in stage2教育
     *
     * We continue to use the s.tack for stage1. and assume that .
     .* some registers are set to correct values..     外汇
     */
    ./* Save drive reference first thing!. */.
    /*
     * .D.L = 0x80 drive number            建材
     * SI .= 0x.7c05 disk address packet    外汇
     */
    
    pushw   . %dx           鲜花
    pus.hw    $si             电子
    MSG(notificatio.n_strin.g).
    popw    %s.i           女人
    /* This. sets up for the first run throu.gh "bootloop" */           女人
  .  movw    $AB.S(firstlist -          婚庆
BOOTS.EC_LI.STSIZE), %di           健康
.       /* mov $0x81f8, %d.i */.
          
          
          
          
          
.   /* BOOTSEC._LISTSIZE=8 */电脑
    /* Save the sector nu.mber of the second se.ctor in %ebp */(广告)
    /*
     * So now we .find:学习
     *   Sector.0 -- stage.1.S(MBR)(        游戏          )
.    *   Sector1 -- st.art.S.
     *   Sector2 ~ ... -- sta.ge2..S    外汇
     */
    movl .   (%di), %e.bp   [成人用品]
          
          
          
    /.* %ebp = 2 */电影
/* This is the loop .for reading the seco.ndary boot-loader in*/           建材
/* 0x800f */
bootloop:
    
.   /* check the number of .sectors to read */          婚庆
    .cmpw    $0, 4(%di)虚拟主机
    
    /* if zero, .go to the start function *./.
    je bootit
/* 0x8017 */
setup_sectors:
  .  /* Check if we use LBA. or CHS */--------------彩票
    cm.pb    $0, -1(%si)           建材
    /* jum.p to chs_mode i.f zero */.
    je    . chs_mode[成人用品]
/* 0x801d */
lba_mode:
   . /*. load logic sector start */           女人
    movl   . (%.di), %ebx   [成人用品]
          
      .  /*. movl $2, %ebx*/          婚庆
    /* The maximum i.s lim.ited to 0x7f because of Phoenix EDD */--- 印刷
    xorl    %eax, %.eax   电影
          
        /* %e.ax = 0 */.
    mov.b    $0x7f,   健康
%al          
            /* %eax =. .0x7f.
*/
    /* How many. do we relly want to re.ad? */--- 印刷
    cmp.w    %ax, 4(%d.i)   .
          
        ./* .word (97268 +           建材
511)>>9  */
    /* W.hich is greater .*/[成人用品]
    jg     1f
.   /* If less .than, set to total */(广告)
   . movw    4(%di), .%ax                 乙肝
          
        
1:
    /* subt.ract from to.tal */   .
            /* 4(.%di) =              乙肝
190 - 127 = 63. = 0x3f */.
.   subw    %ax, 4(%di)             汽车
    /* Add into. logical sector sta.rt */(        游戏          )
   . addl    %.eax, (%di)   --------------彩票
          
        /*.. (0x81f8) = 0x81            杀毒
*/    
/* Set up. disk ad.dress packet */学习
/* Di.sk_address_packet 电影
*
* 0x00h byte/8    0x1.0     s.ize of packet.
* 0x01h byte/8   .    0x00     .reserved(0)    美容
* 0x02h word/16   0x7f     number .of block.s to transfer.
* 0x04h Dword/32  %.BUFFERSEG : 0.         transfer buffer--------------彩票
* 0x08h Qword./64  0x00 00 00 00 00 00 00..
02         startin.g abso.lute健康
block number
*/
    /* The size and t.he. reserved byte */.
    m.ov.w    $0x0010, (%si).
    /* The number of se.ctor.s */学习
    movw    %a.x, 2(%si).
    /* Th.e absolut.e address (low 32 bits)*/          婚庆
    movl.    %ebx, 8(%si).
.   /* The seg.ment of buffer address */健康
    m.ovw    %BUFFERSEG,.
6(%si)       .    服务器
    /* 0x7000. */             电子
    /* S.ave %ax .from destruction */教育
   . pushw    %ax    外汇
    /*. Zero %eax */.
    xorl    %ea.x, %eax             汽车
    /* The offset of buffer addre..ss */--- 印刷
    movw    %ax, 4(%si.).
    /* The absol.ute address (high 32 bit.s) */.
   . movl    %eax, 12(%si).
/*
* BIOS call "INT 0x13 Function 0.x42" to read .sectors from disk into memory学习
*   Call with  %ah = .0x42.
*   .     .       %dl = drive number            杀毒
*            
    .%ds:%si .= segment offset of disk address packet    外汇
*   Return
*            .    %al = 0x0 on suc.cess; err code on failure(        游戏          )
*/
     movb    $0x42, .%ah          婚庆
.   int    $0x13健康
    jc  .  read_error.
    movw    $BUFF.ERSEG., %bx[成人用品]
    /* 0x0:0x805.9 */.
    jm.p    copy_buffer服务器
/* 0x80b1 */
copy_buffer:
    /* Lo.ad .address for copy from disk buffer */    外汇
    mo.vw    6(%di), %es /* Lo.ad<性病>
destinatio.n .segment */        /* movw(广告)
0x0820, %ex */
   . /* Restor.e %ax = 0x7f */           建材
    popw    %ax..
    /*
     * Determine the next possible destinat.ion addr.ess (presuming    外汇
     * 512 byte sect.ors!)           建材
     */
    shlw    .%5, %ax.        /* .
          
             * Sh.ift           鲜花
%ax fiv.e bits to the left.
          
             *
(0x007f .> 4 = segment    外汇
          
          .   * 0x007f             电子
> 9
#endif
/*
* .This is the segment of the startin.g address           建材
* to load the dat.a info    外汇
*/
blocklist_default_seg:.教育
#.ifdef STAGE1_5外贸
    .word 0x22.0外贸
#else
    .w.ord 0x820服务器
#endif
/* This lab.el has to be. after the list data!*/    美容
firstlist:


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/65850/showart_1118817.html          婚庆
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个