操作系統學習_編譯和寫入_nasm dd

首先得有一個asm

;boot1.asm
;2017.8.16

;nasm boot1.asm -o boot

bits 16
org 7c00h

start:
    cli

; macro: FAST_A20_ENABLE
; description:
;                 set 0x92[1] to enable A20 line
        in al,0x92                                         ; port 0x92
        or al, 0x02                                                ; set A20 bit
        out 0x92, al
    sti

    mov ax,cs
    mov ds,ax
    mov ss,ax
    mov es,ax
    mov sp,7c00h

dot:        

        push ax

        push bx

        mov ah, 0x0e

        xor bh, bh

        mov al,'a'

        int 0x10                

        pop bx

        pop ax

        ret

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

times 510-($-$$) db 0
    dw 0xaa55

在命令行中

nasm boot1.asm -o boot
編譯後輸出爲boot

當然你得先安裝nasm

    sudo apt-get install nasm

之後是寫入
首先得有一個空的img

bximage
執行後跟據提示完成製作
 bximage 
========================================================================
                                bximage
  Disk Image Creation / Conversion / Resize and Commit Tool for Bochs
         $Id: bximage.cc 13069 2017-02-12 16:51:52Z vruppert $
========================================================================

1. Create new floppy or hard disk image
2. Convert hard disk image to other format (mode)
3. Resize hard disk image
4. Commit 'undoable' redolog to base image
5. Disk image info

0. Quit

**Please choose one [0] 1** 


Create image

**Do you want to create a floppy disk image or a hard disk image?
Please type hd or fd. [hd] fd**

**Choose the size of floppy disk image to create.
Please type 160k, 180k, 320k, 360k, 720k, 1.2M, 1.44M, 1.68M, 1.72M, or 2.88M.
 [1.44M]** 

**What should be the name of the image?
[a.img]** 

Creating floppy image 'a.img' with 2880 sectors

The following line should appear in your bochsrc:
  floppya: image="a.img", status=inserted

加粗的部分爲需要輸入的。

下面就可以用dd寫入了

 dd if=boot of=demo.img count=1

if輸入文件
of輸出文件

現在打開bochs,如果配置文件沒有錯的話,應該是這樣的

bochs 
========================================================================
                       Bochs x86 Emulator 2.6.9
               Built from SVN snapshot on April 9, 2017
                  Compiled on Aug 11 2017 at 18:38:30
========================================================================
00000000000i[      ] BXSHARE not set. using compile time default '/usr/local/share/bochs'
00000000000i[      ] reading configuration from .bochsrc
------------------------------
Bochs Configuration: Main Menu
------------------------------

This is the Bochs Configuration Interface, where you can describe the
machine that you want to simulate.  Bochs has already searched for a
configuration file (typically called bochsrc.txt) and loaded it if it
could be found.  When you are satisfied with the configuration, go
ahead and start the simulation.

You can also start bochs with the -q option to skip these menus.

1. Restore factory default configuration
2. Read options from...
3. Edit options
4. Save options to...
5. Restore the Bochs state from...
6. Begin simulation
7. Quit now

Please choose one: [6] 

回車

Please choose one: [6] 
00000000000i[      ] installing x module as the Bochs GUI
00000000000i[      ] using log file bochsout.txt
Next at t=0
(0) [0x0000fffffff0] f000:fff0 (unk. ctxt): jmpf 0xf000:e05b          ; ea5be000f0
<bochs:1> 

如果回車後有報錯,就需要按照提示折騰一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章