parsing - 汇编程序应该如何区分符号和全字母十六进制值?
问题描述
我正在学习一些 8080 程序集,它使用较旧的后缀H
来表示十六进制常量(与现代前缀0x
或相比$
)。我还在用玩具汇编器闲逛,并考虑如何标记源代码。
可以编写一个有效的十六进制常量 (say) BEEFH
,它只包含字母字符。也可以定义一个名为BEEFH
. 所以当我写:
ORG 0800H
START: ...
JMP BEEFH ; <--- how is this resolved?
....
BEEFH: ...
...
根据旧的英特尔文档,这在语法上应该是有效的:BEEFH
符合标签的命名规则,当然也是一个有效的 16 位地址。这里的操作数是地址常量还是标识符的歧义JMP
似乎是个问题。
我无法访问原始的 8080 汇编器来查看它对这个示例的作用。这是一个在线 8080 汇编器,它似乎JMP
在所有情况下都将操作数解析为标签引用,但显然一个合适的汇编器应该能够使用 JMP 指令定位绝对地址。
谁能阐明围绕此的约定实际上是/应该是什么?我错过了一些明显的东西吗?谢谢。
解决方案
推荐阅读
- oracle - DBMS_CRYPTO 加密数字数据类型
- mysql - 选择所有存在于特定年份但不存在于其他特定年份的地方
- postgresql - pgpool/postgres - replication_delay 太高,如何重置?
- r - R中的tso包
- r - 根据某些列值添加新的/重复的行
- c++ - 通过 [] 访问新定义的向量的问题
- google-apps-script - Google Apps 脚本:将 PDF 克隆到新文件夹
- html - 更改 google drive 嵌入式视频缩略图
- laravel - Laravel:如何在 404 的情况下获取 url 前缀
- java - 为什么使用 List.of 以外的其他替代方法