Assembly ORG指令在汇编代码中做什么?

Assembly ORG指令在汇编代码中做什么?,assembly,motorola,68000,Assembly,Motorola,68000,作为参考,该代码适用于摩托罗拉68008 假设我有如下代码: org 200 sequenceO: ds.b 5 sequenceN: ds.b 5 move.w #sequenceO, A0 move.w #sequenceN, A1 我认为A0将保持值200,A1将保持值205,这对吗 过去一篇论文中的一个试题是:“sequence0和sequenceN的物理地址是什么?”,答案是“200和205”,还是“200-204和205-209” 我见过一些带有多个组织指令的代码,例如 组织10

作为参考,该代码适用于摩托罗拉68008

假设我有如下代码:

org 200
sequenceO: ds.b 5
sequenceN: ds.b 5

move.w #sequenceO, A0
move.w #sequenceN, A1
  • 我认为A0将保持值200,A1将保持值205,这对吗

  • 过去一篇论文中的一个试题是:“sequence0和sequenceN的物理地址是什么?”,答案是“200和205”,还是“200-204和205-209”

  • 我见过一些带有多个组织指令的代码,例如

    组织100

    阵列1:ds.b 4

    组织机构300

  • 我认为遵循最后一个org指令是对的吗?例如,在本例中,array1指向300?

    我假设“org”表示“来源”——分配给发出的代码或数据段的第一个地址

  • 是的,听起来不错。
    sequenceN
    的地址超出了
    sequence0
    的5个字节
  • “那要看情况了”,我想。。。因为它是复数形式的“地址”,我想他们想要整个范围,在这种情况下,你的后一个答案是正确的
  • 不,我希望多个
    org
    s只应用于它们后面的代码,因此在这种情况下
    array1
    将为100美元。由于在后一个
    org
    之后没有代码或数据生成,因此汇编程序基本上忽略了它
  • 是的,200和205

  • Sequence0从200开始,扩展5个字节到204

  • 不,array1从100开始,在Org300之后的任何东西都会从300开始


  • 您正在使用:
    MOVE.W#sequenceO,A0

    因此,您只将地址的低位字(16位)加载到
    A0
    。 这只能在非常低的内存中工作(
    A0
    $00010000
    下)

    通常,在地址寄存器上使用
    MOVE.W
    会很棘手

    尝试:
    LEA#sequence0,A0
    (将32位地址加载到
    A0

    大多数汇编程序还将执行以下操作:

    MOVEA.L #sequence0, A0
    

    谢谢,戴夫·斯莫尔

    我也这么认为。然而,我在课堂讲稿或互联网上找不到任何细节,我想确保我已经完全了解了它的工作原理。我不想在考试中犯一个愚蠢的错误,我假设SequenceO指向200,而SequenceO指向201。那么“组织指令”是什么意思@dmor?