When the computer power is turned on, it will first perform power-on self-check (POST), and then find the boot disk, if you choose to start from a floppy disk, the computer will find the 0-side 0-side 0-side track 1 Sector of the floppy disk. If it is found to end with 0xAA55, the BIOS considers it as a boot sector, then, the BIOS copies the Boot Code of the first 512 bytes of the boot sector to the 0000: 7c00 of the memory and completely delivers the Controller to this boot code.
The Simple Guide code is as follows:
Copy codeThe Code is as follows: org 07c00h; tells the compiler to load to 07c00h
Mov ax, cs
Mov ds, ax
Mov es, ax
Call DispStr; call the display string Function
Jmp $; infinite loop
DispStr:
Mov ax, BootMessge
Mov bp, ax
Mov cx, 16
Mov ax, 01301 h
Mov bx, 000ch
Mov dl, 0
Int 10 h
Ret
BootMessge: db "hello, OS world! "
Times 510-($-$) db 0
Dw 0aa55h
This code is written in nasm, which is similar to the masm language. The org 07c00h command is to add 07c00h to the offset address in the code after the command, so that the program will be executed at 0000: 7c00. As mentioned in the book, use the nasm bootsector command. asm-o boot. bin to generate boot code. bin, and then. bin write to the floppy disk with 0 sides and 0 tracks and 1 sector. The problem is that I don't have a floppy disk. However, in the wmware virtual machine, it seems that I can start it with an image file of a floppy disk. So I want to create an image file instead of a floppy disk as the boot disk, but how to create this image file?
Remember to useDd commands in linux have been used as linux boot disks. dd should be ready for production.So I found dd on the Internet to create an image file. The method is as follows:
1. First create an empty floppy disk image file diska. img (1.44Mb floppy disk image file ):
Dd if =/dev/zero of = diska. img bs = 512 count = 2880
2. Create an image file boot. img that contains boot. bin:
Dd if = boot. bin of = boot. img bs = 512 count = 1
3. copy the data after one slice in diska. img to the end of boot. img.
Dd if = diska. img of = boot. img skip = 1 seek = 1 bs = 512 count = 2879
In this way, an image file with a boot code of 1.44Mb is created.
The next thing is easy to do. directly create an empty Virtual Machine in wmware, and set the Floppy path to the path of the created Boot Sector in the settings, as shown in the following figure:
Set Floppy connection, disconnect the CD/DVD connection, and start the virtual machine to see the following picture:
Conclusion: Writing and running this small code can give you a deeper understanding of system startup, but what you don't understand isHow to start with an ISO image file and write the boot code to an ISO Image File, There is still no good solution.