; Title: CISS 360 Demo Program
;------------------------------------------------------------
; Description: This program displays the alphabet forwards
;              and backwards and then displays a welcome
;              message.
;------------------------------------------------------------
; Programmer: Ron Hart
;------------------------------------------------------------
; Date/Time: Tuesday, January 11, 2011 3:54 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                    *
        ;****************************************************
 asterisks   BYTE  "* * * * * * * * * * * * *",10,13,0
        welcome     BYTE  "* Welcome to CISS 360!  *",10,13,0
        newline     DWORD 10
.CODE   ;****************************************************
        ;*                  Code Section                    *
        ;****************************************************
_MainProc PROC ; start of main program
           mov  al, 'a'        ; start with lowercase 'a'
           mov  ecx, 26        ; loop counter (num letter in alphabet)
   do_forward:
           put_ch  eax         ; display current character
           inc     eax         ; add one to character value
           loop    do_forward  ; go display next character
           put_ch  newline     ; done, display newline
           put_ch  newline     ; display another newline
           dec     eax         ; decrement character value (now 'z')
           mov     ecx, 26     ; re-init loop counter
   do_backward:
           put_ch  eax         ; display current character
           dec     eax         ; decrement character value 
           loop    do_backward ; go display next character
           put_ch  newline     ; done, display newline
           put_ch  newline     ; display another newline
           put_str asterisks   ; display string of asterisks
           put_str welcome     ; display welcome message
           put_str asterisks   ; display another line of asterisks
           put_ch  newline     ; display newline
           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.