.386
.MODEL FLAT
ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD
INCLUDE io.h ; header file for input/output
cr EQU 0dh ; carriage return character
Lf EQU 0ah ; line feed
.STACK 4096 ; reserve 4096-byte stack
.DATA ; reserve storage for data
number1 DWORD ?
number2 DWORD ?
prompt1 byte " enter first number: ",0
prompt2 byte " enter second number: ",0
voroodi byte 40 dup(?)
khorooji byte cr, lf, "the sum is: "
sum byte 11 dup(?)
byte cr,lf,0
pjz byte cr,lf, "zf = 1",0
pjnz byte cr,lf, "zf = 0",0
pjc byte cr,lf, "cf = 1",0
pjnc byte cr,lf, "cf = 0",0
pjp byte cr,lf, "pf = 1",0
pjnp byte cr,lf, "pf = 0",0
pjo byte cr,lf, "of = 1",0
pjno byte cr,lf, "of = 0",0
pjs byte cr,lf, "sf = 1",0
pjns byte cr,lf, "sf = 0",0
.CODE ; start of main program code
_start:
output prompt1
input voroodi,40
atod voroodi
mov number1,eax
output prompt2
input voroodi,40
atod voroodi
mov number2,eax
mov eax, number1
add eax, number2
dtoa sum,eax
output khorooji
jc ljc
jnc ljnc
endjc:
jz ljz
jnz ljnz
endjz:
jo ljo
jno ljno
endjo:
jp ljp
jnp ljnp
endjp:
js ljs
jns ljns
endjs:
INVOKE ExitProcess, 0 ; exit with return code 0
ljc:
output pjc
jmp endjc
ljnc:
output pjnc
jmp endjc
ljo:
output pjo
jmp endjo
ljno:
output pjno
jmp endjo
ljp:
output pjp
jmp endjp
ljnp:
output pjnp
jmp endjp
ljz:
output pjz
jmp endjz
ljnz:
output pjnz
jmp endjz
ljs:
output pjs
jmp endjs
ljns:
output pjns
jmp endjs
PUBLIC _start ; make entry point public
END ; end of source code