我想为marie写一个汇编器,但是我一开始就卡住了。我的机器代码必须具有以下格式: FFFF 'first address‘'last addres’'...命令‘
假设我们有一个这样的代码:
LOAD 104
ADD 105
STORE 106
HALT
HEX 23
HEX FFE9
DEC 0现在,没有办法告诉我们从哪个地址开始,所以我应该一直使用100,或者它有时会改变?
现在,对于最后一个地址,是简单的100+(命令数)吗?
提前感谢
发布于 2015-01-06 05:17:01
现实生活中的汇编器使用元指令(通常称为ORG,它是‘起源’的缩写,例如ORG 100)来指示汇编器从哪个地址开始(或继续,当放在程序中间的某个地方时)。当然,您也可以用另一种方式(硬编码;命令行参数)来解决这个问题。
为MARIE编写的程序的正确地址到底是什么,完全取决于运行时系统(在真实的计算机上,即操作系统;在您的例子中,是一个模拟器)。我看到从100开始的代码示例,所以这是有意义的。也许小于100的地址是为运行时系统保留的,谁知道呢。
从那里开始,汇编程序会自动增加每条指令的地址。对于MARIE,我认为这很简单(只需加1);在现实生活中的处理器中,不同的指令通常具有不同的大小。
对于其余部分,如果您知道如何手动将汇编语言转换为机器代码,那么自动化该过程应该很简单。
https://stackoverflow.com/questions/27785428
复制相似问题