为什么汇编中的 .org 8000 时第一个地址等于 0000?

Her*_*roz 4 assembly hexdump 6502 disassembly eeprom

我观看了 Ben Eater 的关于构建基于 6502 芯片的计算机的视频,但我陷入了第 3 部分(汇编语言 VS 机器代码)。他正在对 32k EEPROM 进行编程,并通过汇编进行编程以闪烁 LED。这是他使用的汇编程序http://sun.hasenbraten.de/vasm/ 这是他的代码:

在此输入图像描述

但我有一个关于org指令的问题,这就是我所理解的 org 告诉汇编器从哪个地址开始的意思?在图片中orgequals$8000所以我认为第一个地址指令应该是8000但是当他输出文件时它 equal 0000

为什么第一条指令的地址不是8000

在此输入图像描述

Pet*_*des 5

它是一个没有元数据的平面二进制文件,并且无论如何都会hexdump向您显示文件偏移量,而不是寻找元数据来找出加载地址。

如果您用来xxd进行十六进制转储,它有一个-o选项可让您指定要添加到文件位置的偏移量。xxd -g 1 -o 0x8000 a.out应该从 (1-byte groups, ) 开始00008000并且通常类似于hexdump -C(1-byte groups, -groupsize 1)

平面二进制文件的反汇编程序通常具有类似的选项,可以像将图像加载/映射到内存中的某个基地址一样进行反汇编。