TITLE (SumUp1.asm) ; promt and read N and out: 1 + 2 + ... N ; Last update: 11/28/17 ; INCLUDE Irvine32.inc .data msg BYTE "Input N: ", 0 msg2 BYTE "ANS = ", 0 .code main PROC LBG: MOV EDX, offset msg call WriteString ; if N<0 then quit call ReadInt ; EAX = N CMP EAX, 0 JLE EXT call sum ; call the precedure call crlf MOV EDX, offset msg2 call WriteString call WriteDec call crlf call crlf JMP LBG EXT: exit main ENDP sum PROC USES ECX EBX ; p.141 ; Pre-condition: EAX = N ; Post-cond.: EAX = 1+2 .. ; PUSH ECX MOV ECX, EAX ; ECX = N MOV EAX, 0 MOV EBX, 1 LP: ADD EAX, EBX ; EAX = 1+2+... INC EBX ; EBX ++ LOOP LP ; POP ECX RET sum ENDP END main