0

アセンブリ言語に関してかなり簡単な質問があります。SIC/XE アーキテクチャは、基本的に教育目的でのみ使用されますが、他のアーキテクチャの一般的な規則に従っています。さて、私の質問と答えについての最初の考えです。

シンボル ALPHA と BETA がソース プログラムのラベルであると仮定します。次の 2 つの一連のステートメントの違いは何ですか?

A.) LDA ALPHA-BETA

B.) LDA ALPHA
    SUB BETA

わかりやすくするために、LDA は算術演算に使用されるレジスタ A にデータをロードします。また、ここに示す SUB や ADD などの演算は、デフォルトでレジスタ A を宣言しなくても機能します。

さて、一見すると、A と B の両方が同等であると想定しています。私の論理は非常に簡単です。A に ALPHA と BETA の差をロードするか、A に ALPHA をロードしてから、レジスタ A の ALPHA から BETA を減算します。まったく同じことを達成しているように見えるのはどれですか? 些細な詳細が欠けていますか、それとも見た目ほど単純ですか?

4

1 に答える 1

2

LDAメモリ内の単一のアドレスを受け入れ、その場所からワードをロードします。そのため、LDA ALPHA-BETAaddress から単語をロードしますALPHA-BETA。ただし、2 番目のコードは から単語を読み込み、ALPHAat の単語を減算しBETAます。

推定:

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

これで、address の単語をロードするだけのLDA ALPHA-BETAようにアセンブルされます。これがこの例です。2 番目のコードは、最初にアドレス のワードをロードします。つまり、アドレス のワードを減算します。したがって、結果は になります。LDA 3342103310021

于 2015-09-30T22:17:11.980 に答える