2017-01-31 6 views
0

ユーザがフィボナッチの用語をいくつか入力して、それらの順序で印刷するようにしました。しかし、それはまた、5つの用語が印刷された後に新しい行があることを要求する。もう1つの要件は、masm "loop"命令をフィボナッチ数を計算するループで使用する必要があるということです。私は無限ループなしでこれをどのように実装しますか?これは今私が持っているものです。私は新しい行を追加しようとすると、それは罰金ではなく、フィボナッチを計算します。フィボナッチの5つの出力の後にアセンブラプログラムの新しい行を呼び出す方法

.data 
fib_count DWORD ? 
num1   DWORD 0 
num2   DWORD 1 
sum   DWORD 0 
counter  DWORD 0 
spaces  BYTE  "  ",0 
.code 

main PROC 

;Display fibonacci 
mov  ecx, fib_count ;fib_count is the number of terms the user entered 
;printing first 1 
mov  eax, 1 
call WriteDec 
mov  edx, OFFSET spaces 
call WriteString 
dec  ecx 

print_loop: 
mov  eax, num1 
add  eax, num2 
mov  sum, eax 
mov  eax, num2 
mov  num1,eax 
mov  eax, sum 
mov  num2,eax 
mov  eax, sum 
call WriteDec 
inc  counter 
mov  eax, counter 
cmp  eax, 5 
je  new_line 
mov  edx, OFFSET spaces 
call WriteString 
loop print_loop 

new_line: 
call crlf 
loop print_loop 

答えて

2

あなたはNEW_LINEコードを一周するだけNEW_LINE前にジャンプ命令が必要になります。

「ショート」を何
;  ... 
     call WriteString 
     loop print_loop 
     jmp  short done 

new_line: 
     call crlf 
     loop print_loop 
done: 
;  ... 
+0

jmpの後の意味ですか? – Conman97

+0

@ Conman97 - ショートジャンプは通常のジャンプよりもコードバイトが少なくてすみますが、「短い」範囲でジャンプするだけです。 – rcgldr

関連する問題