Chinaunix

标题: 请教AT&T的高手,关于bootsect.s将自己转移到0x9000的跳转问题 [打印本页]

作者: hzpldx@163.com    时间: 2008-06-26 09:05
标题: 请教AT&T的高手,关于bootsect.s将自己转移到0x9000的跳转问题
大家好,书上说linux在启动的时候要将自己复制到0x9000,然后跳转到实现复制的代码后继续运行.
我看书上的代码是用类同Inte的格式写的.我想用AT&T的方式实现,我写了如下代码可是一直不对,请高手指点:

.code16

.section .text
.set        SETUPLEN,        4
.set        BOOTSEG        ,        0x07c0
.set        INITSEG ,        0x9000
.set  SETUPSEG,        0x9020
.set  SYSSEG,         0x1000
.set  SYSSIZE,        0x3000
.set  ROOT_DEV,        0x306


        movw $BOOTSEG,%ax
        movw  %ax,%si
        movw  $INITSEG,%ax
        movw  %ax,%di
        movw  $256,%cx
       
        rep movsw
        jmpl   $INITSEG,go     /*@1*/

go:

        .....在这里我实现了一个调用BIOS实现重启.如果没有上面@1那句的jmpl语句的话是可以重启的,但是加上这句就不对了
        ...我想可能我的代码复制代码没有写对,也有可能是那句jmpl语句没有写对,请高手指点,我很急。。。。。
作者: tielian    时间: 2008-06-26 10:15
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2