assembly nasm忽略.text节中的vstart=0x7C00

pobjuy32  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(84)

我使用NASM 2.16.01,Arch Linux。
我尝试使用vstart=0x7C00属性写入一个 Boot 扇区(8086,IBM PC),以便下面的地址计算应该与此相关。
但是,它不起作用,因为所有地址仍然是相对于0计算的。为什么会这样(我不理解NASM文档)?我想让第33行中的jmp 0:$+5求值为EA xx7C 0000
我的代码:

zz2j4svz

zz2j4svz1#

正如@MichaelPetch指出的那样(谢谢!)nasm在其代码清单中用[]显示可重定位地址,因此

33 0000004A EA[4F00]0000                    jmp 0:$+5

实际上是在生成的二进制文件中编码为EA 4F 7C 00 00。(带hexdump -C的)
但是,使用yasm -p nasm生成的清单不显示方括号,而是直接显示存储在二进制文件中的正确的二进制数据。(正如人们所期望的那样)。
因此,nasm显示的可重定位二进制数据是误导性的,因为二进制文件没有重定位表。

相关问题