linux 汇编 读取软盘,[Linux]dd 读写软盘:在软盘主引导扇区写入显示hello world的二进制代码数据...

代码效果

06576676beaf3db3d9e6867ce6ba890a.png

在软盘主引导扇区写入显示 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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值