- 论坛徽章:
- 0
|
大家好,书上说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语句没有写对,请高手指点,我很急。。。。。 |
|