Linux下Bochs,NASM安裝和使用


安裝環境

以Ubuntu為例,先更新一下:

sudo apt-get update
sudo apt-get upgrade

然后安裝Bochs環境:

sudo apt-get install build-essential xorg-dev libgtk2.0-dev

安裝NASM

NASM官網下載,這以nasm-2.14.02.tar.gz為例:用

tar zxvf nasm-2.14.02.tar.gz

解壓后編譯安裝

cd nasm-2.14.02.tar.gz
./configure
make
sudo make install

輸入

whereis nasm

顯示

/usr/bin/nasm

安裝成功!

安裝Bochs

Bochs官網下載,這以bochs-2.6.11.tar.gz為例:解壓文件用

tar zxvf bochs-2.6.11.tar.gz

解壓后編譯安裝

cd bochs-2.6.11.tar.gz
./configure --enable-debugger --enable-disasm
make
sudo make install

輸入

bochs

顯示
在這里插入圖片描述
安裝成功!

創建鏡像

可以在桌面上新建個文件夾nasm,然后進入這個文件夾,在命令行輸入:
在這里插入圖片描述
就會在文件夾中創建一個a.img。

編譯代碼寫入鏡像

這以《x86匯編語言:從實模式到保護模式》中代碼為例:保存名為code.asm在nasm里

         ;代碼清單7-1
         ;文件名:c07_mbr.asm
         ;文件說明:硬盤主引導扇區代碼
         ;創建日期:2011-4-13 18:02

         jmp near start

 message db '1+2+3+...+100='

 start:
         mov ax,0x7c0           ;設置數據段的段基地址 
         mov ds,ax

         mov ax,0xb800          ;設置附加段基址到顯示緩沖區
         mov es,ax

         ;以下顯示字符串 
         mov si,message          
         mov di,0
         mov cx,start-message
     @g:
         mov al,[si]
         mov [es:di],al
         inc di
         mov byte [es:di],0x07
         inc di
         inc si
         loop @g

         ;以下計算1到100的和 
         xor ax,ax
         mov cx,1
     @f:
         add ax,cx
         inc cx
         cmp cx,100
         jle @f

         ;以下計算累加和的每個數位 
         xor cx,cx              ;設置堆棧段的段基地址
         mov ss,cx
         mov sp,cx

         mov bx,10
         xor cx,cx
     @d:
         inc cx
         xor dx,dx
         div bx
         or dl,0x30
         push dx
         cmp ax,0
         jne @d

         ;以下顯示各個數位 
     @a:
         pop dx
         mov [es:di],dl
         inc di
         mov byte [es:di],0x07
         inc di
         loop @a

         jmp near $ 


times 510-($-$$) db 0
                 db 0x55,0xaa

編譯代碼:

nasm -f bin code.asm -o code.bin -l code.lst

把程序寫入鏡像

dd if=code.bin of=a.img

執行NASM代碼

在nasm里創建bochsrc.txt,內容為

megs:128
#模擬器的內存  

romimage:file=/usr/local/share/bochs/BIOS-bochs-latest
#這個是BIOS-bochs-latest的路徑,可能不一樣

vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest  
#這個是VGABIOS-lgpl-latest的路徑,也可能不一樣

floppya:1_44=a.img,status=inserted 
#這個是啟動軟盤,在當前目錄下,如果不在當前目錄,需要指明路徑  

boot:floppy  
#表示從軟盤啟動

log:bochsout.txt  
#日志輸出文件

執行:

bochs -f bochsrc

顯示
在這里插入圖片描述
再執行

bochs

在這里插入圖片描述
選擇6開始模擬,出現黑窗口,輸入C顯示
在這里插入圖片描述
成功!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM