[关闭]
@comzyh 2015-12-06T22:54:08.000000Z 字数 2859 阅读 1418

MBR

未分类


dd if=/dev/my-device of=mbr bs=512 count=1
sudo dd if=mbr of=/dev/sdc seek=446 bs=1 count=64 skip=446
objdump -D -b binary -mi386 -Maddr16,data16
http://www.itzhai.com/assembly-int-10h-description.html

14、功能0EH
功能描述:在Teletype模式下显示字符

入口参数:AH=0EH

AL= 字符

BH=页码

BL=前景色(图形模式)

出口参数:无

41: ac lods %ds:(%si),%al
42: 3c 00 cmp 0x7,%bx
49: b4 0e mov 0x10
4d: eb f2 jmp 0x41

sudo apt-get install nasm qemu gcc

http://www.digitalthreat.net/2009/09/a-simple-bootloader/
https://zh.wikipedia.org/wiki/BIOS_%E4%B8%AD%E6%96%B7%E5%91%BC%E5%8F%AB
http://stackoverflow.com/questions/32682152/how-to-reboot-in-x86-assembly-from-16-bit-real-mode

  1. [BITS 16]
  2. [ORG 0x7C00]
  3. MOV SI, str_HelloWorld
  4. CALL PrintString
  5. JMP WaitForKeyAndRestart
  6. PrintString:
  7. MOV AL, [SI]
  8. OR AL, AL
  9. JZ exit_print
  10. MOV AH, 0x0E ; Teletype Mode
  11. MOV BH, 0x00 ; Page zero
  12. MOV BL, 0x07 ; Light Gray
  13. INT 0x10
  14. INC SI
  15. JMP PrintString
  16. exit_print:
  17. RET
  18. WaitForKeyAndRestart:
  19. MOV AH, 0x00
  20. INT 0x16
  21. MOV SI, str_Restarting
  22. CALL PrintString
  23. ;jmp 0xFFFF
  24. JMP reboot
  25. reboot:
  26. db 0x0ea
  27. dw 0x0000
  28. dw 0xffff
  29. str_HelloWorld db 'Hello World, press R key to restart', 0
  30. str_Restarting db 'Restarting', 0
  31. TIMES 510 - ($ - $$) DB 0
  32. db 0x55
  33. db 0xaa
  1. 0000000: be2b 7ce8 0200 eb12 8a04 08c0 740b b40e .+|.........t...
  2. 0000010: b700 b307 cd10 46eb efc3 b400 cd16 be50 ......F........P
  3. 0000020: 7ce8 e4ff eb00 ea00 00ff ff48 656c 6c6f |..........Hello
  4. 0000030: 2057 6f72 6c64 2c20 7072 6573 7320 2052 World, press R
  5. 0000040: 206b 6579 2074 6f20 7265 7374 6172 7400 key to restart.
  6. 0000050: 5265 7374 6172 7469 6e67 0000 0000 0000 Restarting......
  7. 0000060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  8. 0000070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  9. 0000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  10. 0000090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  11. 00000a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  12. 00000b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  13. 00000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  14. 00000d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  15. 00000e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  16. 00000f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  17. 0000100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  18. 0000110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  19. 0000120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  20. 0000130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  21. 0000140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  22. 0000150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  23. 0000160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  24. 0000170: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  25. 0000180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  26. 0000190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  27. 00001a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  28. 00001b0: 0000 0000 0000 0000 0000 0000 0000 0020 ...............
  29. 00001c0: 2100 0cfe ffff 0008 0000 00f0 9e03 0000 !...............
  30. 00001d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  31. 00001e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
  32. 00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa ..............U.
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注