2015-09-30 46 views
0

我有一个关于汇编语言的相当简单的问题。我们使用的SIC/XE架构基本上只是用于教育目的而已,但遵循其他架构的通用约定。现在回答我的问题和想法。算术汇编语言语法问题

假设符号ALPHA和BETA是源程序中的标签。 以下两个语句序列有什么区别?

A.) LDA ALPHA-BETA 

B.) LDA ALPHA 
    SUB BETA 

为了清楚起见,LDA将数据加载到寄存器A中,该寄存器用于算术运算。像SUB这样的操作,或ADD,默认情况下工作在寄存器A上,而不必声明它。

现在,乍一看,我假设A和B都是等价的。我的逻辑非常简单。将ALPHA和BETA的差值加载到A中,或者加载到A,ALPHA中,然后从寄存器A中的ALPHA中减去BETA中的值。我看起来完成了同样的事情?我错过了一些微不足道的细节,还是它看起来很简单?

+0

这个玩具语言的手册说这个语句的含义是什么?我会猜测间接寻址。 – Davislor

+0

LDA m,A获取内存中的数据(m..m + 2)。 – enigma

回答

2

LDA接受内存中的单个地址,并从该位置加载单词。因此,LDA ALPHA-BETA将从地址ALPHA-BETA加载一个单词。然而,第二个代码将加载ALPHA中的一个单词,然后减去BETA处的单词。

假设:现在

ALPHA=103 
BETA=100 
mem[3]=42 
mem[100]=2 
mem[103]=3 

LDA ALPHA-BETA将被组装为LDA 3这将只是在地址3加载的话,那就是在我们的例子42。第二个代码将首先加载地址为103的单词,即3,然后减去地址为100的单词即2,因此结果将为1

+0

啊很好很清楚。谢谢! – enigma