Thursday, March 17, 2011

This program prompts for and obtains two integer values and then computes and displays the sum of the two input values By Professor Ronald J. Hart

; Title: CISS 360 Program Demo 2
;------------------------------------------------------------
; Description: This program prompts for and obtains two
; integer values and then computes and displays
; the sum of the two input values.
;------------------------------------------------------------
; Programmer: Ron Hart
;------------------------------------------------------------
; Date/Time: Thursday, January 13, 2011 4:07 PM
;------------------------------------------------------------

.586
.MODEL FLAT
INCLUDE console_io.h ; header file for console input/output

.STACK 4096 ; reserve 4096-byte (1024 DWORD) stack

;------------------------------------------------------------
; Input/Output Facility
;------------------------------------------------------------
;
; Macro Operand
;
; put_ch DWORD/Reg (Displays character in parameter)
;
; get_ch None (Loads character from keyboard into EAX)
;
; put_str BYTE (Displays string beginning at given address)
;
; put_i DWORD/Reg (Displays integer value in parameter)
;
; put_fp REAL4/Reg (Displays float value in parameter)
;
; get_i DWORD (Loads integer entered at keyboard into parameter)
;
; get_fp REAL4 (Loads float entered at keyboard into parameter)
;
; get_str BYTE (Loads string entered at keyboard into parameter)
;
;------------------------------------------------------------

.DATA ;****************************************************
;* Data Section *
;****************************************************

prompt1 BYTE "Enter 1st integer: ",0
prompt2 BYTE "Enter 2nd integer: ",0

result_str BYTE "Sum = ",0

value1 DWORD ?
value2 DWORD ?
newline DWORD 10

.CODE ;****************************************************
;* Code Section *
;****************************************************

_MainProc PROC ; start of main program

put_str prompt1 ; prompt for first integer value
get_i value1 ; get first integer value
put_ch newline ; output newline
put_ch newline ; output another newline
put_str prompt2 ; prompt for second integer value
get_i value2 ; get second integer value
put_ch newline ; output newline
put_ch newline ; output another newline

mov eax, value1 ; load EAX with first integer value
add eax, value2 ; add second integer value to EAX

put_str result_str ; display "result" string
put_i eax ; display sum of two integer values

done ; macro to display "done" message and get any key
xor eax, eax ; exit with return code 0
ret ; return

_MainProc ENDP ; end of main program

;------------------------------------------------------------

proc_name PROC ; sample procedure

push ebp ; save base pointer
mov ebp, esp ; establish stack frame

;; push registers used by this proc

;; proc code inserted here

;; pop registers used by this proc

pop ebp ; restore base pointer

ret

proc_name ENDP

;----------------------------------------------------------------------

stat_flags MACRO

fstsw ax ; FPU status word to AX
sahf ; condition code bits to flags
ENDM

;----------------------------------------------------------------------

END ; end of source code

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.