0

累乗を行うアセンブリ コード: • アセンブリ プログラムを実装して、指定された数 n の指数べき乗 P(n,e) を計算します。o 例えば。n = 2 かつ e = 5 の場合、P(n,e) は = 2 2 2 2 2 = 32 になります。 • ユーザーは、数値 n の値を R0 に入力する必要があります。つまり、RAM[0] および e を R1、つまり RAM[1] に挿入します。• 結果 P(n,e) は RAM[2] に保存する必要があります。• 特別な場合: e が 0 の場合、プログラムは RAM[0] に 1 を格納し、プログラムを終了する必要があります。

asmについていくつかの研究を行っています。power.asm に関するこの特定の質問に対して、以下に示すようにサンプルの回答が与えられましたが、M=0 の前に @2 があり、その後に @1 があるのはなぜですか? power.asmでこのコードを説明してくれる人はいますか? ありがとうございました。

    @2
    M=0  
    @1
    D=M 
    @EXIT
    D;JEQ
    @POWER
    D;JGT

(EXIT) 
    @1
    D=A
    @2  
    M=D  
    @0
    M=D  
    @END  
    0;JMP
    
(POWER)
    @0
    D=M
    @2  
    M=D  // set up first iteration, power of 1
    @END  // if the first iteration is 1, no need to add anymore, since multiples of 1 is 1
    D-1;JEQ
    
    

(LOOP)
    @0
    D=M  
    @3
    M=D-1 
    
    @2
    D=M 
    @4
    M=D  
    
    @1
    M=M-1   
    D=M
    @MULT 
    D;JLT
    @END  
    D;JEQ

(MULT)
    @4
    D=M 
    @2
    M=D+M    
    
    @3
    M=M-1 
    D=M
    @MULT           
    D;JGT
    @LOOP  
    D;JEQ
    
    
(END)
    0;JMP
    
4

1 に答える 1