برنامه نویسی

DSEG    SEGMENT 'DATA'
      ; add your data here!
      b   db  10                                                                                                                       ;تعريف داده ها      
      c db  ?
     
        h db  'please enter time hh_mm_ss:    ',"$"   
        m db  'please enter data yy/mm/dd:    ',"$"
     n db 'Mostafa   Hatami ',"$"
      
       
DSEG    ENDS

SSEG    SEGMENT STACK   'STACK'
      db   256  DUP(0)
SSEG    ENDS

CSEG    SEGMENT 'CODE'
   START   PROC   
   assume cs:cseg,ds:dseg,ss:sseg
      ; set segment registers:
      MOV AX, DSEG
      MOV DS, AX
      MOV ES, AX

 

       mov  ah,6h                                                                                                       ;پاک کردن صفحه نمايش
       mov  al,25
       mov  ch,0
       mov  cl,0
       mov  dh,24
       mov  dl,79
       mov  bh,7
       int  10h
                                                                                                                                    ;انتقال مکان نما
      mov   ah,2h
      mov   dh,1
      mov   dl,25
      mov   bh,0
      int   10h
  
       lea dx,n                                                                                                        ;چاپ نام
      mov ah,9h
      int 21h
      
      
      mov   ah,2h                                                                                                    ;انتقال مکان نما
      mov   dh,2
      mov   dl,25
      mov   bh,0
      int   10h
    


       

      call  disp_time                                                                                ;فراخواني زير برنامه نمايش زمان
     
      call   disp_data                                                                                 ;فراخواني زير برنامه نمايش تاريخ
    ;==========================================================    
    ;==========================================================
    ;==========================================================
   
   
    mov   ah,2h                                                                                             ;نتقال مکان نما
    mov   dh,3
    mov   dl,25
    mov   bh,0
    int   10h
   
    lea dx,h                                                                                                   ;چاپ پيغام ورود زمان
    mov ah,9h
    int 21h
   
    call in_time                                                                                             ;فراخواني زير برنامه ورود زمان
   
    mov   ah,2h                                                                                             ;نتقال مکان نما
    mov   dh,6
    mov   dl,25
    mov   bh,0
    int   10h
   
    call  disp_time                                                                                          ;فراخواني زير برنامه نمايش زمان
   
    mov   ah,2h                                                                                              ;انتقال مکان نما
    mov   dh,7
    mov   dl,25
    mov   bh,0
    int   10h
   
    lea dx,m                                                                                                  ;چاپ پيغام ورود تاريخ
    mov ah,9h
    int 21h
   
    call in_data                                                                                          ;فراخواني زير برنامه ورود تاريخ
   
     mov   ah,2h                                                                                              ;انتقال مکان نما
    mov   dh,8
    mov   dl,25
    mov   bh,0
    int   10h
   
    call  disp_data                                                                                         ;فراخواني زير برنامه نمايش تاريخ

 

       mov  ah,6h                                                                                                       ;پاک کردن صفحه نمايش
       mov  al,25
       mov  ch,0
       mov  cl,0
       mov  dh,24
       mov  dl,79
       mov  bh,7
       int  10h
   
 lop:  

 mov   ah,2h                                                                                                    ;انتقال مکان نما
      mov   dh,2
      mov   dl,25
      mov   bh,0
      int   10h
    
 call  disp_time                                                                                ;فراخواني زير برنامه نمايش زمان
     
      call   disp_data                                                                                 ;فراخواني زير برنامه نمايش تاريخ   


    jmp lop                                                                                                ;برگشت به حلقه  
      
     
     
      MOV AX, 4C00h ; exit to operating system.
      INT 21h   
   START   ENDP
;==============================================
disp_time   proc           
       mov    ah,02h                                                                  ;وقفه گرفتن زمان از سيستم
      int    1ah
     
      push  cx                                                                           ;تبديل کد بي سي دي براي ثبات ch
      shr   ch,4
      add   ch,30h    
      mov   ah,02h
      mov   dl,ch
      int   21h
      pop   cx
      shl   ch,4
      shr   ch,4
      add   ch,30h
      mov   ah,2h
      mov   dl,ch
      int   21h
     
      mov   ah,2h                                                       ;چاپ کاراکتر :
      mov   dl,3ah
      int   21h
     
      push  cx                                                             ;تبديل کد بي سي دي براي ثبات cl
      shr   cl,4
      add   cl,30h    
      mov   ah,02h
      mov   dl,cl
      int   21h
      pop   cx
      shl   cl,4
      shr   cl,4
      add   cl,30h
      mov   ah,2h
      mov   dl,cl
      int   21h
     
      mov   ah,2h                                                                                 ;چاپ کاراکتر :
      mov   dl,3ah
      int   21h
     
      push  dx                                                                                           ;تبديل کد بي سي دي براي ثبات dl
      shr   dh,4
      add   dh,30h    
      mov   ah,02h
      mov   dl,dh
      int   21h
      pop   dx
      shl   dh,4
      shr   dh,4
      add   dh,30h
      mov   ah,2h
      mov   dl,dh
      int   21h
     
      mov   ah,2h                                                                      ;وقفه کاراکتر نول
      mov   dl,00h
      int   21h
      mov   ah,2h
      mov   dl,00h
      int   21h
     
      ret
disp_time   endp     

;============================================
disp_data   proc
       
         mov    ah,04h                                                            ;وقفه نمايش تاريخ
      int    1ah
     
      push  dx                                                                       ;تبديل کد بي سي دي براي ثبات cl
       push  cx
      shr   cl,4
      add   cl,30h    
      mov   ah,02h
      mov   dl,cl
      int   21h
      pop   cx
      shl   cl,4
      shr   cl,4
      add   cl,30h
      mov   ah,2h
      mov   dl,cl
      int   21h
     
      mov   ah,2h                                                ;وقفه نمايش کاراکتر/
      mov   dl,2fh
      int   21h
     
      pop  dx                                                                             ;تبديل کد بي سي دي براي ثباتdh
      push  dx
      shr   dh,4
      add   dh,30h    
      mov   ah,02h
      mov   dl,dh
      int   21h
      pop   dx
      push  dx
      shl   dh,4
      shr   dh,4
      add   dh,30h
      mov   ah,2h
      mov   dl,dh
      int   21h
        
      mov   ah,2h                                                                               ;وقفه نمايش کاراکتر/
      mov   dl,2fh
      int   21h
     
      pop  dx                                           ;تبديل کد بي سي دي براي ثباتdl                              
      push  dx
      shr   dl,4
      add   dl,30h    
      mov   ah,02h
      int   21h
      pop   dx
      shl   dl,4
      shr   dl,4
      add   dl,30h
      mov   ah,2h
      int   21h
     
      ret


disp_data   endp
;=======================================
in_time proc
      mov   ah,01h
      int   21h
      sub   al,30h
      shl   al,4
      mov   ch,al
      mov   ah,01h
      int   21h
      sub   al,30h
      add   al,ch
      mov   ch,al
     
      mov   ah,2h
      mov   dl,3ah
      int   21h
     
      mov   ah,01h
      int   21h
      sub   al,30h
      shl   al,4
      mov   cl,al
      mov   ah,01h
      int   21h
      sub   al,30h
      add   al,cl
      mov   cl,al
     
      mov   ah,2h
      mov   dl,3ah
      int   21h
     
     
      mov   ah,01h
      int   21h
      sub   al,30h
      shl   al,4
      mov   dh,al
      mov   ah,01h
      int   21h
      sub   al,30h
      add   al,dh
      mov   dh,al
     
      mov   ah,03h
      mov   dl,1h
      int   1ah  
       

ret
in_time endp
;=======================================
in_data proc
      mov   ah,01h
      int   21h
      sub   al,30h
      shl   al,4
      mov   cl,al
      mov   ah,01h
      int   21h
      sub   al,30h
      add   al,cl
      mov   cl,al
     
      mov   ah,2h
      mov   dl,2fh
      int   21h
     
      mov   ah,01h
      int   21h
      sub   al,30h
      shl   al,4
      mov   dh,al
      mov   ah,01h
      int   21h
      sub   al,30h
      add   al,dh
      mov   dh,al
     
      mov   ah,2h
      mov   dl,2fh
      int   21h
     
     
      mov   ah,01h
      int   21h
      sub   al,30h
      shl   al,4
      mov   dl,al
      mov   ah,01h
      int   21h
      sub   al,30h
      add   al,dl
      mov   dl,al
     
      mov   ah,05h
      int   1ah  
       

ret
in_data endp

       
CSEG    ENDS
END    START    ; set entry point.

+ نوشته شده در  یکشنبه هفدهم آذر ۱۳۸۷ساعت 2:28  توسط ابراری |