了解 Z80 美元符号和标签
Understanding Z80 dollar signs and labels
我正在研究 Brandon W 的 "fake" ti-84 申请,看看它是如何工作的。 (http://brandonw.net/calculators/fake/) 在查看代码时,我注意到许多我不理解的标签和跳转指令。我想了解他是如何使用这些美元符号和跳跃的。我的问题在以下代码片段中提出:(所有代码均来自 Brandon W 的开源假应用程序!)
resetKeys:
xor a
ld (de),a
$$: ld a,(MenuCurrent) ;How is this label two dollar signs? What does this mean?
cp 02h
jr nz,$F ;Are we jumping to the instruction at 0xF or to one of these dollar sign labels?
ld hl,sFakeAppVar
rst 20h
B_CALL ChkFindSym
jr c,$F ;If we are jumping to 0xF, what are the dollar signs used for?
ld a,b
or a
jr nz,$F
inc de
inc de
ld a,(de)
cp 25h
jr z,ignoreAppsKeys
cp 26h
jr z,ignoreAppsKeys
cp 27h
jr z,ignoreAppsKeys
$$: pop af ;Here's another
ld b,a
ld a,(cxCurApp)
cp 45h
jr nz,$F
ld a,b
cp kCapS
jr nz,$F
根据我的研究,美元符号用于表示十六进制或当前位置计数器。如果我错了,请纠正我。任何帮助将不胜感激!
$ 符号有多种用途。大多数 Z80 汇编器使用 $ 作为十六进制数字的前缀,如本例所示:
jr z, A
这些汇编程序还使用 $ 来表示代码行在二进制文件中的位置。这对于创建常量来表示代码位置很有用,例如在这种情况下:
value_to_jump = $+1
jr
在这种情况下,'value_to_jump' 是一个常量,它将保存存储 $10 的地址(jr $10 是 2 个字节长,因此 $+1 指向这些字节中的第二个)。
最后,一些汇编程序允许您创建匿名标签,如 $$ 或 @@。这就是您在这里看到的情况。在这段代码中:
jr $f
....
$$:
....
jr $b
跳转指令是指"closest forward"或"closest backwards",指的是匿名标签。
我正在研究 Brandon W 的 "fake" ti-84 申请,看看它是如何工作的。 (http://brandonw.net/calculators/fake/) 在查看代码时,我注意到许多我不理解的标签和跳转指令。我想了解他是如何使用这些美元符号和跳跃的。我的问题在以下代码片段中提出:(所有代码均来自 Brandon W 的开源假应用程序!)
resetKeys:
xor a
ld (de),a
$$: ld a,(MenuCurrent) ;How is this label two dollar signs? What does this mean?
cp 02h
jr nz,$F ;Are we jumping to the instruction at 0xF or to one of these dollar sign labels?
ld hl,sFakeAppVar
rst 20h
B_CALL ChkFindSym
jr c,$F ;If we are jumping to 0xF, what are the dollar signs used for?
ld a,b
or a
jr nz,$F
inc de
inc de
ld a,(de)
cp 25h
jr z,ignoreAppsKeys
cp 26h
jr z,ignoreAppsKeys
cp 27h
jr z,ignoreAppsKeys
$$: pop af ;Here's another
ld b,a
ld a,(cxCurApp)
cp 45h
jr nz,$F
ld a,b
cp kCapS
jr nz,$F
根据我的研究,美元符号用于表示十六进制或当前位置计数器。如果我错了,请纠正我。任何帮助将不胜感激!
$ 符号有多种用途。大多数 Z80 汇编器使用 $ 作为十六进制数字的前缀,如本例所示:
jr z, A
这些汇编程序还使用 $ 来表示代码行在二进制文件中的位置。这对于创建常量来表示代码位置很有用,例如在这种情况下:
value_to_jump = $+1
jr
在这种情况下,'value_to_jump' 是一个常量,它将保存存储 $10 的地址(jr $10 是 2 个字节长,因此 $+1 指向这些字节中的第二个)。
最后,一些汇编程序允许您创建匿名标签,如 $$ 或 @@。这就是您在这里看到的情况。在这段代码中:
jr $f
....
$$:
....
jr $b
跳转指令是指"closest forward"或"closest backwards",指的是匿名标签。