; Title : Fibonacci Series Sum(FibonacciSeriesSum.asm)
; Program Description : Write an Assembly program that input the Number of terms and
; Display Fibonacci Series. It also Display the Sum of Fibonacci Series.
; Author : robustprogramming.com
; Architecture : Intel x86
; Library : Irvine32
; Assembler : Microsoft Macro Assembler (MASM 32-bit) version (12.0)
; Interface : Console
; IDE : Microsoft Visual Studio Ultimate 2013
; Operating System : Windows 8.1
INCLUDE Irvine32. inc
.DATA
; insert variables here
dPrevious DWORD 0
dCurrent DWORD 1
dNext DWORD 1
dNumberOfTerms DWORD 0
dSum DWORD 0
msg1 BYTE "Enter Number of Fibonacci Series Terms : " , 0 ; A null-terminated string
msg2 BYTE "Fibonacci Series is " , 0
msg3 BYTE "Sum of Fibonacci Series = " , 0
msg4 BYTE "Error: Fibonacci Series Contain at least 2 number of terms" , 0
msgFibonacciSeries BYTE "Display Fibonacci Series and Sum of Fibonacci Series in Assembly Language " , 0
. CODE
; insert all executable statements here
main PROC
mov edx , OFFSET msgFibonacciSeries ; "Display Fibonacci Series and Sum of Fibonacci Series in Assembly Language "
call WriteString ; Display a null-terminated string.
call Crlf ; Writes an end-of-line sequence to the console window.
mov edx , OFFSET msg1 ; "Enter Number of Fibonacci Series Terms : "
call WriteString ; Display a null-terminated string.
call ReadInt ; Input a 32-bit signed decimal integer
; from the keyboard and save in EAX.
mov dNumberOfTerms, eax
mov ebx , dNumberOfTerms
cmp ebx , 1 ; compare EBX and 1
jle Error ; jump if Less than or equal (<=)
mov edx , OFFSET msg2 ; "Fibonacci Series is "
call WriteString
call Crlf ; Writes an end-of-line sequence to the console window.
mov eax , dPrevious
call WriteDec ; Display an unsigned 32-bit integer value
; in EAX in decimal format.
add dSum, eax
call Crlf
mov eax , dCurrent
call WriteDec
add dSum, eax
call Crlf
mov ecx , dNumberOfTerms ; ECX initialize with Number Of Terms
sub ecx , 2 ; Exclude First Two Terms
cmp ecx , 0 ; compare EBX and 0
je showSum ; jump if equal (=)
doPart1:
mov ebx , dPrevious
add ebx , dCurrent
mov dNext, ebx
mov eax , DNext
call WriteDec
call Crlf
add dSum, eax
mov eax , dCurrent
mov dPrevious, eax
mov eax , dNext
mov dCurrent, eax
loop doPart1 ; if ECX == 0 Then loop stop
showSum:
mov edx , offset msg3
call WriteString
mov eax , dSum
call WriteDec
call Crlf
jmp next
Error:
mov edx , OFFSET msg4 ; "Error: Fibonacci Series Contain at least 2 number of terms"
call WriteString
call Crlf
next:
call WaitMsg ; Displays a message and waits for a key to be pressed.
exit ; The exit statement (indirectly) calls a predefined
; MS-Windows function that halts the program.
main ENDP ; The ENDP directive marks the end of the main procedure.
END main ; The END directive marks the last line of the program to be assembled.
OyBUaXRsZSAgICAgICAgICAgICAgIDogRmlib25hY2NpIFNlcmllcyBTdW0oRmlib25hY2NpU2VyaWVzU3VtLmFzbSkKOyBQcm9ncmFtIERlc2NyaXB0aW9uIDogV3JpdGUgYW4gQXNzZW1ibHkgcHJvZ3JhbSB0aGF0IGlucHV0IHRoZSBOdW1iZXIgb2YgdGVybXMgYW5kCjsgRGlzcGxheSBGaWJvbmFjY2kgU2VyaWVzLiBJdCBhbHNvIERpc3BsYXkgdGhlIFN1bSBvZiBGaWJvbmFjY2kgU2VyaWVzLgo7IEF1dGhvciAgICAgICAgICAgICAgOiByb2J1c3Rwcm9ncmFtbWluZy5jb20KOyBBcmNoaXRlY3R1cmUgICAgICAgIDogSW50ZWwgeDg2CjsgTGlicmFyeSAgICAgICAgICAgICA6IElydmluZTMyCjsgQXNzZW1ibGVyICAgICAgICAgICA6IE1pY3Jvc29mdCBNYWNybyBBc3NlbWJsZXIgKE1BU00gMzItYml0KSB2ZXJzaW9uICgxMi4wKQo7IEludGVyZmFjZSAgICAgICAgICAgOiBDb25zb2xlCjsgSURFICAgICAgICAgICAgICAgICA6IE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFVsdGltYXRlIDIwMTMKOyBPcGVyYXRpbmcgU3lzdGVtICAgIDogV2luZG93cyA4LjEKIApJTkNMVURFIElydmluZTMyLmluYwogCi5EQVRBCgk7IGluc2VydCB2YXJpYWJsZXMgaGVyZQogICAgICBkUHJldmlvdXMgRFdPUkQgMAoJCWRDdXJyZW50ICBEV09SRCAxCgkJZE5leHQgRFdPUkQgMQoJCWROdW1iZXJPZlRlcm1zIERXT1JEIDAKCQlkU3VtIERXT1JEIDAKCQltc2cxIEJZVEUgIkVudGVyIE51bWJlciBvZiBGaWJvbmFjY2kgU2VyaWVzIFRlcm1zIDogIiwwIDsgQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nCgkJbXNnMiBCWVRFICJGaWJvbmFjY2kgU2VyaWVzIGlzICIsMAoJCW1zZzMgQllURSAiU3VtIG9mIEZpYm9uYWNjaSBTZXJpZXMgID0gIiwwCgkJbXNnNCBCWVRFICJFcnJvcjogRmlib25hY2NpIFNlcmllcyBDb250YWluIGF0IGxlYXN0IDIgbnVtYmVyIG9mIHRlcm1zIiwwCgkJbXNnRmlib25hY2NpU2VyaWVzIEJZVEUgIkRpc3BsYXkgRmlib25hY2NpIFNlcmllcyBhbmQgU3VtIG9mIEZpYm9uYWNjaSBTZXJpZXMgaW4gQXNzZW1ibHkgTGFuZ3VhZ2UgIiwwCiAKIAouQ09ERQoJOyBpbnNlcnQgYWxsIGV4ZWN1dGFibGUgc3RhdGVtZW50cyBoZXJlCgltYWluIFBST0MKCQltb3YgZWR4LCBPRkZTRVQgbXNnRmlib25hY2NpU2VyaWVzICA7ICJEaXNwbGF5IEZpYm9uYWNjaSBTZXJpZXMgYW5kIFN1bSBvZiBGaWJvbmFjY2kgU2VyaWVzIGluIEFzc2VtYmx5IExhbmd1YWdlICIKCQljYWxsIFdyaXRlU3RyaW5nICAgICAgICAgICAgICAgICAgICA7IERpc3BsYXkgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgoJCWNhbGwgQ3JsZiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgV3JpdGVzIGFuIGVuZC1vZi1saW5lIHNlcXVlbmNlIHRvIHRoZSBjb25zb2xlIHdpbmRvdy4KIAoJCW1vdiBlZHgsIE9GRlNFVCBtc2cxICAgICAgOyAiRW50ZXIgTnVtYmVyIG9mIEZpYm9uYWNjaSBTZXJpZXMgVGVybXMgOiAiCgkJY2FsbCBXcml0ZVN0cmluZyAgICAgICAgICA7IERpc3BsYXkgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgoJCWNhbGwgUmVhZEludCAgICAgICAgICAgICAgOyBJbnB1dCBhIDMyLWJpdCBzaWduZWQgZGVjaW1hbCBpbnRlZ2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGZyb20gdGhlIGtleWJvYXJkIGFuZCBzYXZlIGluIEVBWC4KICAgICAgbW92IGROdW1iZXJPZlRlcm1zLCBlYXgKIAoJCW1vdiBlYngsZE51bWJlck9mVGVybXMKCQljbXAgZWJ4LDEgICAgICAgICAgICAgICAgOyBjb21wYXJlIEVCWCBhbmQgMQogICAgICBqbGUgRXJyb3IgICAgICAgICAgICAgICAgOyBqdW1wIGlmIExlc3MgdGhhbiBvciBlcXVhbCAgKDw9KQogCgkJbW92IGVkeCwgT0ZGU0VUIG1zZzIgICAgIDsgIkZpYm9uYWNjaSBTZXJpZXMgaXMgIgoJCWNhbGwgV3JpdGVTdHJpbmcKCQljYWxsIENybGYgICAgICAgICAgICAgICAgOyBXcml0ZXMgYW4gZW5kLW9mLWxpbmUgc2VxdWVuY2UgdG8gdGhlIGNvbnNvbGUgd2luZG93LgogCgkJbW92IGVheCxkUHJldmlvdXMKCQljYWxsIFdyaXRlRGVjICAgICAgICAgICAgOyBEaXNwbGF5IGFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgaW4gRUFYIGluIGRlY2ltYWwgZm9ybWF0LgoJCWFkZCBkU3VtLGVheAoJCWNhbGwgQ3JsZgogCiAKCQltb3YgZWF4LGRDdXJyZW50CgkJY2FsbCBXcml0ZURlYwoJCWFkZCBkU3VtLGVheAoJCWNhbGwgQ3JsZgogCgkJbW92IGVjeCxkTnVtYmVyT2ZUZXJtcyAgICA7IEVDWCAgaW5pdGlhbGl6ZSB3aXRoIE51bWJlciBPZiBUZXJtcwoJCXN1YiBlY3gsMiAgICAgICAgICAgICAgICAgOyBFeGNsdWRlIEZpcnN0IFR3byBUZXJtcwogCgkJY21wIGVjeCwwICAgICAgICAgICAgICAgICA7IGNvbXBhcmUgRUJYIGFuZCAwCiAgICAgIGplIHNob3dTdW0gICAgICAgICAgICAgICAgOyBqdW1wIGlmIGVxdWFsICAoPSkKIAoJZG9QYXJ0MToKCQkJbW92IGVieCxkUHJldmlvdXMKCQkJYWRkIGVieCxkQ3VycmVudAoJCQltb3YgZE5leHQsZWJ4CgkJCW1vdiBlYXgsRE5leHQKCQkJY2FsbCBXcml0ZURlYwoJCQljYWxsIENybGYKIAoJCQlhZGQgZFN1bSxlYXgKCQkJbW92IGVheCxkQ3VycmVudAoJCQltb3YgZFByZXZpb3VzLGVheAoJCQltb3YgZWF4LGROZXh0CgkJCW1vdiBkQ3VycmVudCxlYXgKCQkJbG9vcCBkb1BhcnQxICAgICAgICA7IGlmIEVDWCA9PSAwIFRoZW4gbG9vcCBzdG9wCnNob3dTdW06CgkJbW92IGVkeCwgb2Zmc2V0IG1zZzMKCQljYWxsIFdyaXRlU3RyaW5nCgkJbW92IGVheCxkU3VtCgkJY2FsbCBXcml0ZURlYwoJCWNhbGwgQ3JsZgoJCWptcCBuZXh0CkVycm9yOgoJCW1vdiBlZHgsIE9GRlNFVCBtc2c0ICAgICA7ICJFcnJvcjogRmlib25hY2NpIFNlcmllcyBDb250YWluIGF0IGxlYXN0IDIgbnVtYmVyIG9mIHRlcm1zIgoJCWNhbGwgV3JpdGVTdHJpbmcKCQljYWxsIENybGYKbmV4dDoKCWNhbGwgV2FpdE1zZyAgICA7IERpc3BsYXlzIGEgbWVzc2FnZSBhbmQgd2FpdHMgZm9yIGEga2V5IHRvIGJlIHByZXNzZWQuCglleGl0ICAgICAgICAgICAgOyBUaGUgZXhpdCBzdGF0ZW1lbnQgKGluZGlyZWN0bHkpIGNhbGxzIGEgcHJlZGVmaW5lZAogICAgICAgICAgICAgICAgICAgIDsgTVMtV2luZG93cyBmdW5jdGlvbiB0aGF0IGhhbHRzIHRoZSBwcm9ncmFtLgoJbWFpbiBFTkRQICA7IFRoZSBFTkRQIGRpcmVjdGl2ZSBtYXJrcyB0aGUgZW5kIG9mIHRoZSBtYWluIHByb2NlZHVyZS4KRU5EIG1haW4gICAgICAgOyBUaGUgRU5EIGRpcmVjdGl2ZSBtYXJrcyB0aGUgbGFzdCBsaW5lIG9mIHRoZSBwcm9ncmFtIHRvIGJlIGFzc2VtYmxlZC4K
compilation info
prog.asm:12: error: parser: instruction expected
prog.asm:16: error: parser: instruction expected
prog.asm:17: error: parser: instruction expected
prog.asm:18: error: parser: instruction expected
prog.asm:19: error: parser: instruction expected
prog.asm:20: error: parser: instruction expected
prog.asm:21: error: parser: instruction expected
prog.asm:22: error: parser: instruction expected
prog.asm:23: error: parser: instruction expected
prog.asm:24: error: parser: instruction expected
prog.asm:25: error: parser: instruction expected
prog.asm:30: error: parser: instruction expected
prog.asm:31: error: comma, colon, decorator or end of line expected after operand
prog.asm:35: error: comma, colon, decorator or end of line expected after operand
prog.asm:45: error: comma, colon, decorator or end of line expected after operand
prog.asm:82: error: comma, colon, decorator or end of line expected after operand
prog.asm:89: error: comma, colon, decorator or end of line expected after operand
prog.asm:96: error: symbol `main' redefined
prog.asm:96: error: parser: instruction expected
prog.asm:97: error: parser: instruction expected
ld: cannot find prog.o: No such file or directory
stdout