跳转到内容

68000 汇编/标签

来自维基教科书,开放的书籍,开放的世界

标签只是行的名称。您可以拥有任意数量的标签。通常,您只需要在少数地方引用它们,例如函数的起始点、循环的开始和结束以及某些数据存储位置。

汇编器将标签视为数字的别名。当它遇到一个标签时,它会将当前的 PC 值分配给它。(我将称之为“声明”标签。)然后,该标签可以在任何使用数字的地方用作操作数。它们通常用于 Jcc 或 Bcc 指令。

请注意,您可以在标签实际声明之前引用它们。这被称为 *向前引用*,具体处理方式取决于汇编器。通常,它只是使用一个已知的安全值(如当前 PC),标记该位置,并在第二次遍历时替换实际值。这可能会改变标签的大小,在这种情况下需要进行第三次遍历,依此类推。一些汇编器要求您显式定义跳转/分支的大小,以避免进行第三次遍历。您使用的汇编器可能具有不同的行为。

标签和存储空间

MYDATA:
ds.b 16              ; Declare 16 bytes of space, MYDATA label refers to this location.
global Main          ; Inform assembler that the Main label should be exported (made visible to code not in this file)

Main:                ; Label for the main function
MOVEA.L #MYDATA, A0  ; Set address register A0 to refer to MYDATA space
MOVE.B #0, 0(A0)     ; Copy 0 into the first byte of MYDATA
MOVE.B #1, 1(A0)     ; Copy 1 into the second byte of MYDATA
rts                  ; Return
华夏公益教科书