2015-09-30 208 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