[005][x86匯編語(yǔ)言]開(kāi)發(fā)環(huán)境配置:硬盤(pán)主引導(dǎo)扇區(qū)代碼:顯示標(biāo)號(hào)偏移地址 基礎(chǔ)Bochs調(diào)試命令

《x86匯編語(yǔ)言:從實(shí)模式到保護(hù)模式》 第5章 本章習(xí)題 第2題

http://www.itdecent.cn/p/d481cb547e9f

e5-2.asm :顯示標(biāo)號(hào)infi的偏移地址

         ;代碼清單5-1 
         ;文件名:e5-2.asm
         ;文件說(shuō)明:硬盤(pán)主引導(dǎo)扇區(qū)代碼
         ;參考代碼:c05_mbr.asm
         ;創(chuàng)建日期:21:20 2018/5/20
         
         mov ax,0xb800                 ;指向文本模式的顯示緩沖區(qū)
         mov es,ax

         ;以下顯示字符串"Label offset:"
         mov byte [es:0x00],'L'
         mov byte [es:0x01],0x07
         mov byte [es:0x02],'a'
         mov byte [es:0x03],0x07
         mov byte [es:0x04],'b'
         mov byte [es:0x05],0x07
         mov byte [es:0x06],'e'
         mov byte [es:0x07],0x07
         mov byte [es:0x08],'l'
         mov byte [es:0x09],0x07
         mov byte [es:0x0a],' '
         mov byte [es:0x0b],0x07
         mov byte [es:0x0c],"o"
         mov byte [es:0x0d],0x07
         mov byte [es:0x0e],'f'
         mov byte [es:0x0f],0x07
         mov byte [es:0x10],'f'
         mov byte [es:0x11],0x07
         mov byte [es:0x12],'s'
         mov byte [es:0x13],0x07
         mov byte [es:0x14],'e'
         mov byte [es:0x15],0x07
         mov byte [es:0x16],'t'
         mov byte [es:0x17],0x07
         mov byte [es:0x18],':'
         mov byte [es:0x19],0x07

         mov ax,infi             ;取得標(biāo)號(hào)number的偏移地址
         mov bx,10

         ;設(shè)置數(shù)據(jù)段的基地址
         mov cx,cs
         mov ds,cx

         ;求個(gè)位上的數(shù)字
         mov dx,0
         div bx
         mov [0x7c00+number+0x00],dl   ;保存?zhèn)€位上的數(shù)字

         ;求十位上的數(shù)字
         xor dx,dx
         div bx
         mov [0x7c00+number+0x01],dl   ;保存十位上的數(shù)字

         ;求百位上的數(shù)字
         xor dx,dx
         div bx
         mov [0x7c00+number+0x02],dl   ;保存百位上的數(shù)字

         ;求千位上的數(shù)字
         xor dx,dx
         div bx
         mov [0x7c00+number+0x03],dl   ;保存千位上的數(shù)字

         ;求萬(wàn)位上的數(shù)字 
         xor dx,dx
         div bx
         mov [0x7c00+number+0x04],dl   ;保存萬(wàn)位上的數(shù)字

         ;以下用十進(jìn)制顯示標(biāo)號(hào)的偏移地址
         mov al,[0x7c00+number+0x04]
         add al,0x30
         mov [es:0x1a],al
         mov byte [es:0x1b],0x04
         
         mov al,[0x7c00+number+0x03]
         add al,0x30
         mov [es:0x1c],al
         mov byte [es:0x1d],0x04
         
         mov al,[0x7c00+number+0x02]
         add al,0x30
         mov [es:0x1e],al
         mov byte [es:0x1f],0x04

         mov al,[0x7c00+number+0x01]
         add al,0x30
         mov [es:0x20],al
         mov byte [es:0x21],0x04

         mov al,[0x7c00+number+0x00]
         add al,0x30
         mov [es:0x22],al
         mov byte [es:0x23],0x04
         
         mov byte [es:0x24],'D'
         mov byte [es:0x25],0x07
          
   infi: jmp near infi                 ;無(wú)限循環(huán)
      
  number db 0,0,0,0,0
  
  times 203 db 0
            db 0x55,0xaa

代碼說(shuō)明

  • 對(duì)參考代碼:c05_mbr.asm 只做一處修改:第38行 ,取出標(biāo)號(hào)偏移地址:mov ax,infi ;取得標(biāo)號(hào)infi的偏移地址
  • 開(kāi)機(jī)后,主引導(dǎo)扇區(qū)代碼(放在硬盤(pán)0道0面1扇區(qū)的代碼)被加載到內(nèi)存0x0000:0x7c00處
  • 利用除法div運(yùn)算,取出每個(gè)位上的數(shù)
  • +30H 做成ASCII碼,送入顯卡顯存0xB800對(duì)應(yīng)處顯示

異或操作 xor

0 xor 0 = 0
1 xor 0 = 1
0 xor 1 = 1
1 xor 1 = 0

運(yùn)行測(cè)試

vfirtual box 運(yùn)行第5章 習(xí)題2 顯示 infi在段內(nèi)的偏移地址.png
bochs 調(diào)試 第5章 習(xí)題2 顯示 infi在段內(nèi)的偏移地址.png

Bochs

說(shuō)明

  • Bochs:本質(zhì)就是一臺(tái)虛擬機(jī),類似于 VirutalBox
  • 使用Bochs來(lái)調(diào)試,使用VirtualBox來(lái)運(yùn)行結(jié)果

下載

https://sourceforge.net/projects/bochs/files/bochs/2.6.9/

配置

http://www.itdecent.cn/p/d481cb547e9f
參見(jiàn)配書(shū)文件包 booktool \ 相關(guān)教程 \ Bochs安裝手冊(cè).pdf

Disk&Boot.PNG
填寫(xiě)硬盤(pán)參數(shù).png

命令

后接 [真實(shí)物理地址]

s       (step)單步執(zhí)行
b       (break)斷點(diǎn)  b 0x7C00  
c       (continue)繼續(xù)執(zhí)行
r       (register)查看寄存器
sreg    (segment regi)查看段寄存器
xp      (eXamine memory at physical address)查看內(nèi)存 xp/2 0xB8000
q       (quit)退出
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容