;----------------------------------------------------------
; Program Name: integeradd
; Purpose     : integer addition
; Date        : August 2008
; Author      : Yeoh HS
; FASM        : Built using Flat Assembler version 1.67.27
;               edited and compiled with FASM's IDE.
;----------------------------------------------------------
format PE CONSOLE 4.0
entry start

include 'win32a.inc'

section '.data' data readable writeable
    val1      dd  7
    val2      dd  3

section '.code' code readable executable
start:
    ;mov eax, [val1]
    mov eax, [val2]
    add [val1], eax

    stdcall show_me, dfmt,intval,[val1]

    stdcall waitforchar
    invoke  ExitProcess,0

;---------------------------------------------------------
;   Proc to show values of data variables.
;---------------------------------------------------------
proc show_me, fmt, prompt, val
    cinvoke printf, [fmt], [prompt], [val]
    cinvoke printf, strfmt, CRLF
    ret
endp

;----------------------------------------------------------
;  Proc to prevent console window from closing immediately
;----------------------------------------------------------
proc waitforchar
   cinvoke printf, strfmt, CRLF
   cinvoke printf, strfmt, msg
   cinvoke getchar
   ret
endp

section '.data' data readable writeable

    CRLF      db '',13,10,0  ; carriage return and linefeed

    dfmt      db '%s = %d',0
    intval    db 'Integer value',0

    strfmt    db  '%s',0
    msg       db  'Press the Enter key...',0


section '.idata' import data readable writeable

library kernel32,'kernel32.dll',\
        user32,  'user32.dll',\
        msvcrt,  'msvcrt.dll'

include 'api\kernel32.inc'
include 'api\user32.inc'

import msvcrt,\
       printf, 'printf',\
       getchar,'getchar'

; end of file =================================================================
