美文网首页
[Linux]dd 读写软盘:在软盘主引导扇区写入显示hello

[Linux]dd 读写软盘:在软盘主引导扇区写入显示hello

作者: AkuRinbu | 来源:发表于2018-10-15 18:57 被阅读144次

    代码效果

    在软盘主引导扇区写入显示 hello world 的二进制代码数据

    命令行操作

    • 第一步,格式化软盘,/dev/fd0是软盘的名字
      $ sudo fdformat /dev/fd0
      $ sudo mkfs -t msdos /dev/fd0
    • 第二步dd命令 拷贝 软盘数据 到 镜像文件disk.img
      $ sudo dd if=/dev/fd0 of=disk.img bs=1024 count=1440
    • 第三步Nasm 编译汇编源码hello.asm,生成二进制文件hello.bin
      $ nasm -f bin hello.asm -o hello.bin
    • 第四步dd命令,拷贝二进制文件到 镜像文件disk.img
      $ sudo dd if=hello.bin of=disk.img conv=notrunc
    • 第五步dd命令,拷贝 镜像文件disk.img软盘
      $ sudo dd if=disk.img of=/dev/fd0

    完整源码

    • hello.asm
    mov ax,0xb800                 
    mov ds,ax
    
    mov byte [0x00],'h'
    mov byte [0x02],'e'
    mov byte [0x04],'l'     
    mov byte [0x06],'l'
    mov byte [0x08],'o'
    mov byte [0x10],'w'
    mov byte [0x12],'o'
    mov byte [0x14],'r'     
    mov byte [0x16],'l'
    mov byte [0x18],'d'
    
    jmp $
    times 510-($-$$) db 0
    db 0x55,0xaa
    
    • 使用Nasm生成的hello.bin 最后应该是55aa,标识这是一个主引导扇区 master boot record (MBR)
    b800 b88e d8c6 0600 0068 c606 0200 65c6
    0604 006c c606 0600 6cc6 0608 006f c606
    1000 77c6 0612 006f c606 1400 72c6 0616
    006c c606 1800 64eb fe00 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 55aa
    

    相关阅读

    • 详细的 VM虚拟机 操作

    [Ubuntu]dd 命令,软盘读写实例:二进制文件.bin ->镜像文件 .img -> 软盘设备 /dev/fd0
    https://www.jianshu.com/p/ab11cb269634

    参考资料

    • 主引导扇区 (MBR:Master_boot_record)

    https://en.wikipedia.org/wiki/Master_boot_record

    • 软盘的规格

    外文名 3.5-inch floppy disk
    上下两个面: 面号 0、1号
    每个面 80个磁道 : 磁道号 0~79号
    每个磁道分为18个扇区:扇区号 1~18号
    每个扇区512个字节(KB)
    容量
    = 2面 * 80磁道 * 18扇区 * 521字节
    = 1440 KB
    ≈ 1.44 MB
    https://www.jianshu.com/p/bfeed0397631

    • How do I write a bin file (512 bytes) to the first sector (sector 0) of a floppy disk?

    https://stackoverflow.com/questions/32893607/how-do-i-write-a-bin-file-512-bytes-to-the-first-sector-sector-0-of-a-floppy

    • nasm -f bin myfile.asm -o myfile.com

    will assemble myfile.asm into a raw binary file myfile.com.
    https://www.nasm.us/doc/nasmdoc2.html

    相关文章

      网友评论

          本文标题:[Linux]dd 读写软盘:在软盘主引导扇区写入显示hello

          本文链接:https://www.haomeiwen.com/subject/prhqzftx.html