CentOS下首次使用as86汇编器
生活随笔
收集整理的這篇文章主要介紹了
CentOS下首次使用as86汇编器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
新建一個匯編文件,boot.s;
! ! boot.s -- bootsect.s的框架程序.用代碼0x07替換字符串msg1中的1字符,然后在屏幕第一行上顯示. ! .globl begtext,begdata,begbss,endtext,enddata,endbss !全局標示符,供ld86鏈接使用. .text !正文段 begtext: .data !數據段 begdata: .bss !未初始化數據段 begbss: .text !正文段 BOOTSEG = 0x07c0 !BIOS加載bootseg代碼的原始段地址entry start !告知鏈接程序,程序從start標號處開始執行 start:jmpi go,BOOTSEG !段間跳轉.BOOTSEG指出條轉段地址,標號go是偏移地址 go: mov ax,cs !段寄存器cs值-->ax,用于初始化數據段寄存器ds和esmov ds,axmov es,axmov [msg1+17],ah !0x07-->替換字符串中1個點符號,喇叭將會鳴一聲mov cx,#20 !共顯示20個字符,包括回車換行符mov dx,#0x1004 !字符串將顯示在屏幕第17行,第5列處mov bx,#0x000c !字符顯示屬性(紅色)mov bp,#msg1 !指向要顯示的字符串(中斷調用)mov ax,#0x1301 !寫字符串并移動光標到結尾處int 0x10 !BIOS中斷調用0x10,功能0x13,子功能01 loop0: jmp loop0 !死循環 msg1: .ascii "Loading system ..." !BIOS中斷要顯示的字符串,共18個字符.byte 13,10 !字符串結尾的回車換行,合計20個字符 .org 510 !表示以后語句從地址510(0x1FE)開始存放.word 0xAA55 !有效引導扇區標志,供BIOS加載引導扇區使用 .text endtext: .data enddata: .bss endbss:? ? 代碼來自網上;
輸入 as86...,如下圖,提示出錯,但是生成了.o文件;?
-0還是-O,分不清,改為-O,再試一下,也是一樣,
?
ld86,鏈接一下,不能鏈接了;
?
查了一下,最后生成boot文件的命令是,
as86 -0 -a -o boot.o boot.s
ld86 -0 -s -o boot boot.o
dd bs=32 if=boot of=a.img skip=1
? ? -0,非-O;
再試,鏈接出現下圖錯誤;premature end of input file,
?
?
在代碼最后一行再打一個回車;
?
rm刪除之前的無效文件,再編譯鏈接,好了,最終構建好的boot文件出來了;
?
?
總結
以上是生活随笔為你收集整理的CentOS下首次使用as86汇编器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: powerdesigner建立UML活动
- 下一篇: PowerDesigner建立UML序列