Linux内核完全剖析---第3章---as86汇编器---ba
2018-05-04 本文已影响26人
code猪
一、手敲boot.s源码
.globl begtext,begdata,begbss,endtext,enddata,endbss
.text
begtext:
.data
begdata:
.bss
begbss:
.text
BOOTSEG = 0x07c0
entry start
start:
jmpi go,BOOTSEG
go: mov ax,cs
mov ds,ax
mov es,ax
mov [msg1+17],ah
mov cx,#20
mov dx,#0x1004
mov bx,#0x000c
mov bp,#msg1
mov ax,#0x1301
int 0x10
loop0: jmp loop0
msg1: .ascii "Loading system ..."
.byte 13,10
.org 510
.word 0xAA55
.text
endtext:
.data
enddata:
.bss
endbss:
二、使用bin86中的as86和ld86进行编译链接
$: sudo apt install bin86
$: as86 -0 -a -o boot.o boot.s
$: ld86 -0 -s -o boot boot.o
三、使用bochs中的bximage生成1.44M软盘
四、将生成的boot写入到虚拟软盘
$: dd bs=32 if=boot of=boot.img skip=1