Assembly 算术的汇编语言语法问题
关于汇编语言,我有一个相当简单的问题。我们使用的SIC/XE架构基本上是虚构的,仅用于教育目的,但遵循其他架构的常见约定。现在是我的问题和关于答案的第一个想法 假设符号ALPHA和BETA是源程序中的标签。 以下两个语句序列之间的区别是什么Assembly 算术的汇编语言语法问题,assembly,sic,Assembly,Sic,关于汇编语言,我有一个相当简单的问题。我们使用的SIC/XE架构基本上是虚构的,仅用于教育目的,但遵循其他架构的常见约定。现在是我的问题和关于答案的第一个想法 假设符号ALPHA和BETA是源程序中的标签。 以下两个语句序列之间的区别是什么 A.) LDA ALPHA-BETA B.) LDA ALPHA SUB BETA 为了清楚起见,LDA将数据加载到用于算术运算的寄存器A中。像SUB这样的操作,如这里所示,或者ADD,默认情况下在寄存器A上工作,而不必声明它 现在,乍一看,我假
A.) LDA ALPHA-BETA
B.) LDA ALPHA
SUB BETA
为了清楚起见,LDA将数据加载到用于算术运算的寄存器A中。像SUB这样的操作,如这里所示,或者ADD,默认情况下在寄存器A上工作,而不必声明它
现在,乍一看,我假设A和B是等价的。我的逻辑很简单。将α和β的差值加载到A中,或者加载到A中,α,然后从寄存器A中的α中减去β。在我看来,这似乎完成了同样的事情?我是遗漏了一些琐碎的细节,还是真的像看上去那么简单 LDA接受内存中的单个地址,并从该位置加载一个字。因此,
LDA ALPHA-BETA
将从addressALPHA-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
,该玩具语言的手册中说该语句的意思是什么?我猜是间接寻址。LDA m,A从内存(m..m+2)获取数据。