【问题标题】:using nasm directive section vstart=0 make something wrong使用 nasm 指令部分 vstart=0 出错
【发布时间】:2014-12-19 06:41:17
【问题描述】:

无论有没有我都可以组装

section my_main vstart=0 

但是有了它,bochs 模拟器声称没有可启动磁盘。

    jmp $


    times 510-($-$$) db 0
    db 0x55
    db 0xaa

没有它,bochs 将一无所获。

section my_main vstart=0
here:
    %include 'main.s'

    times 1474560 - ($-$$) db 0

我该如何改变 将“这里”从 512 标记为 0?

【问题讨论】:

    标签: nasm boot directive


    【解决方案1】:

    section my_main vstart=N改变$$$的值

    因此times 指令受到计算值的影响。

    因此,软盘图像大小发生了变化。

    而且无法开机。

    (因为软盘镜像大小不符合1474560协议。)

    如果没有vstart 指令,大小将为1474560。

    但是使用vstart 指令,图像文件大小变为1474560 + 512。

    因此 bochs 声称可以启动。

    我通过改变解决了问题

    times 1474560 - ($-$$) db 0
    

    times 1474560 - ($-$$) - loader_size db 0
    

    我在引导签名正下方定义loader_size

    jmp $
    
    
        times 510-($-$$) db 0
        db 0x55
        db 0xaa
    
    %define loader_size ($-$$)
    

    它按预期工作!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-06
      • 2021-12-28
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多