我看了Ben Eater的视频关于建立一个基于6502芯片的计算机,我被困在第3部分(汇编语言VS机器码).他正在编程32k EEPROM,他编程汇编 Flink LED.这是汇编程序,他用http://sun.hasenbraten.de/vasm/在这里他的代码:
但是我有一个关于org
指令的问题,这是我所理解的org告诉汇编程序从哪个地址开始对吗?在图片org
等于$8000
,所以我认为第一个地址指令应该是8000
,但当他输出文件时,它等于0000
。
为什么第一条指令的地址不是8000
?
1条答案
按热度按时间d5vmydt91#
这是一个没有元数据的平面二进制文件,
hexdump
无论如何都会向您显示文件偏移量,而不是查找元数据来计算加载地址。如果您使用
xxd
执行十六进制转储,它有一个-o
选项,可用于指定要添加到文件位置的偏移量。xxd -g 1 -o 0x8000 a.out
应从00008000
开始,通常类似于hexdump -C
(1字节组,-groupsize 1
)平面二进制文件的反汇编程序通常有类似的选项,可以像映像加载/Map到内存中的某个基址一样进行反汇编。