Bochs安装FreeDOS与调试
最經看《80x86匯編語言程序設計》楊季文等著,里面的保護模式的例子無法調試,后來查到bochs可以調試,就折騰了一番,這里寫下吧……
>>>>>>>>>>>>>>>>>>>>>>>無恥的分割線>>>>>>>>>>>>>>>>>>>>>>>>
下載地址:
Bochs:http://bochs.sourceforge.net/
FreeDOS:http://www.freedos.org/????? 這個我下載的1.0,官網上是1.1,一是1.1比1.0大,而是我這1.1安裝時卡逼了……1.0裝成了……
WinImage:http://www.xdowns.com/soft/6/7/2006/Soft_29274.html???? 用于將需要的文件加入到虛擬硬盤
接下來是安裝:
Bochs沒啥說的,就是安裝時把那個DLX Linux Demo也選上,后面方便點,這個您隨意……安裝時選擇Install just for me就可以自定義了,安裝完后桌面上會出現一個打開簡易linux的快捷方式,如果您剛才選擇安裝了的話
接下來就是配置了
首先打開安裝目錄,打開bximage.exe創建虛擬硬盤,前兩部可以直接摁回車,到了第三步是設置大小的,默認10M……大小您自己看著辦吧,別小的裝不下系統就好 - -
第四步是給這文件起個名字……您繼續隨意……但后綴得是.img,然后別著急著關,下面會出現一傳參數,它已經給你復制好了,一會你直接復制到配置文件就可以了,下面說下配置文件
如果您裝了哪個linux,就把她里面的配置復制過來改改就好,沒裝的話,您照著bochs安裝目錄下的bochsrc-sample.txt文件改,別看一大堆,大部分是注釋,帶#號的都是注釋……首先新建個文件夾,例如freedos,將虛擬硬盤、操作系統的iso文件和那個配置文件復制過來,然后改配置文件了
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# how much memory the emulated machine will have
#這是內存的大小
megs: 32????????????????????????????????????????????????????????????????????????????????????????
# filename of ROM images
#這是bios文件地址
romimage: file=../BIOS-bochs-latest
vgaromimage: file=../VGABIOS-lgpl-latest
# what disk images will be used?
#這是設置要使用的軟盤驅動器。
floppya: 1_44=floppya.img, status=inserted
floppyb: 1_44=floppyb.img, status=inserted
# hard disk
#這是硬盤
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="hd10meg.img", cylinders=306, heads=4, spt=17
# choose the boot disk.
#這是選擇啟動盤,c表示從“硬盤”啟動,這個可是指我們的虛擬硬盤
boot: c
# default config interface is textconfig.
#config_interface: textconfig
#config_interface: wx
#display_library: x
# other choices: win32 sdl wx carbon amigaos beos macintosh nogui rfb term svga
# where do we send log messages?
#這個可以不要,是日志文件,不要設置為log:nul
log: bochsout.txt
# disable the mouse, since DLX is text only
#是否要鼠標。
mouse: enabled=0
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
上面這個是那個linux的配置文件,注釋我也從別地抄過來了……接下來把剛才虛擬硬盤那行參數復制到硬盤那里,注釋掉原來的
>>>>>>>>>>>>>>>>>>>>>>>>
# hard disk
#這是硬盤
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
#ata0-master: type=disk, path="hd10meg.img", cylinders=306, heads=4, spt=17
ata0-master: type=disk, path="100M.img", mode=flat, cylinders=203, heads=16, spt=63
ata0-slave: type=cdrom, path="操作系統文件名.iso", status=inserted
這里改成cdrom,安裝完成后再改成c
>>>>>>>>>>>>>>>>>>>>>>>>>
# choose the boot disk.
boot: cdrom
>>>>>>>>>>>>>>>>>>>>
接下來打開freedos文件下,也就是您剛創建的文件夾下的bochsrc.bxrc開始安裝freedos
執行bochsrc.bxrc,格式化硬盤:
??? a.Prepare the harddisk for FreeDOS 1.0 Final by running XFdisk,回車后選擇OK;
??? b.繼續回車,選擇New Partition / Primary Partition,一路YES下去;
??? c.繼續回車,選擇Install Bootmanager;
??? d.按F3,一路YES下去;
5、安裝FreeDOS:
??? a.Continue with FreeDOS installation
??? b.Start installation of FreeDOS 1.0 Final
??? c.一路YES下去即安裝完成;
運行freedos,進入dos后md新建個文件夾
往里面添加要調試的文件,用winimage打開你創建的那個虛擬硬盤,把文件加入你創建的那個文件夾即可
>>>>>>>>>>>>>>>>>>>>>>萬惡的分割線>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
接下來是調試打開bochsdbg.exe,單擊Load,載入freedos的配置文件,然后start,就斷在那里了,下面給大家一些調試命令和方法
bochsdbg的基本命令:
| 指令 | 舉例 | 說明 |
| b addr | b 0x7c00 | 在指定內存物理地址設置斷點 |
| info b | info b | 查看已經設置了的斷定信息 |
| d num | d 1 | 刪除斷點,num為使用info b顯示的斷點序號 |
| c | c | 繼續執行,直到遇到下一個斷點 |
| s | s | 單步執行 |
| n | n | 單步執行(遇到函數跳過) |
| u start end | u 0x7c00 0x7ca0 | 反匯編一段內存 |
| sreg | sreg | 查看寄存器信息(查看GDT與LDT是否加載正確,段寄存器的值等) |
| r | r | 查看通用寄存器信息 |
下面是網上找到的一些方法:
第一種:陷阱
在內存某位置挖一個坑,等著我們的程序跳進去。在程序開頭處增加一段代碼,訪問某內存地址,在Bochsdbg里下該地址的內存訪問斷點。程序一開始運行……等它跳進來的時候抓住它。
詳細過程請猛擊這里:http://www.aogosoft.com/downpage.asp?mode=viewtext&id=140
第二種:死循環
在程序開頭加一句jmp $讓我們的程序死循環,在Bochs里執行這個程序,然后在Bochsdbg里按下Ctrl+C,然后修改EIP寄存器的值指向我們的程序入口。
前兩種都是在網上找到的,都可行,但是比較麻煩,下面這種是天殺老大教給我的,也是Bochs提供的功能。
在程序開始處添加一句xchg bx,bx,然后在Bochsrc.bxrc文件里添加一句magic_break: enabled=1,然后選擇調試啟動Bochs虛擬機,當執行到xchg bx,bx指令時就會自動斷到Bochsdbg里。
這種方法在Bochsrc_sample.txt文件里有介紹,但我想很多人都跟我一樣沒仔細看:-)
參考:
http://blog.csdn.net/fazai001/article/details/6694559
http://www.360doc.com/content/12/0108/15/6938655_178090482.shtml總結
以上是生活随笔為你收集整理的Bochs安装FreeDOS与调试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 段选择符和段寄存器
- 下一篇: 一致性代码段和非一致性代码段