2017-01-31 34 views
0

Таким образом, мое задание состояло в том, чтобы пользователь вводил ряд условий фибоначчи для печати, и программа распечатывала их по порядку. Однако он также требует, чтобы была новая строка после печати пяти условий. Другое требование состоит в том, что команда masm «loop» должна использоваться в цикле, который вычисляет числа фибоначчи. Как бы реализовать это без бесконечного цикла? Это то, что у меня есть сейчас. Он рассчитывает фибо штраф, но не тогда, когда я пытаюсь добавить новую строку:Как сделать сборку программы вызовом новой строки после 5 выходов fibonacci

.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

 Смежные вопросы

  • Нет связанных вопросов^_^