#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Nov 2010
    Posts
    3
    Rep Power
    0

    Showtime procedure


    Suppose the time field of a file directory entry uses bits 0-4 for the seconds, bits 5-10 for the minutes, and bits 11-15 for the hours (24-hour clock). For example, the following binary value indicates a time of 02:16:07, in hh:mm:ss format:
    00010 010000 00111
    Write a procedure named ShowFileTime that receives a binary file time value in the AX
    register and displays the time in hh:mm:ss format
    The following program is written to accomplish the task, but it is incomplete. The code under label L1 and L2 in ShowFiletimeProc needs to be completed.
    INCLUDE Irvine32.inc
    .data
    time WORD 0001001000000111b ; 02:16:07
    .code
    main PROC
    call Clrscr
    mov ax, time ; AX = time in MS-DOS format call ShowFileTime

    exit main ENDP

    ;-------------------------------------
    ShowFileTime PROC
    ;
    ; Receives a binary file time value in MS-DOS format
    ; and displays the time in hh:mm:ss format.
    ; Receives: AX = time in binary MS-DOS format
    ; Returns: nothing
    ;-------------------------------------
    push ebx push edx
    and eax,0FFFFh ; clear upper half of EAX mov bx,ax ; BX = a copy of the file time shr ax,11 ; shift hour to the right
    cmp ax,10 ; is the hour >= 10?
    jae L1 ; yes: display it
    call DisplayZero ; no: display a leading zero
    L1: call WriteDec

    ........ ; display the hour
    ........
    ........

    L2:
    call WriteDec
    ;
    display
    the
    minutes
    ........
    ........
    ........
    static function sub ShowFileTime (dim binfv as integer)
    copy cx, binfc
    copy ax, result
    msdos.interrupt()
    shl ax, 4
    copy ax, 2
    mov bx, ax
    interrupt 21h
    msdos.show
    return ax
    end function
    L3: call WriteDec ; display seconds call Crlf
    pop edx pop ebx ret
    ShowFileTime ENDP

    ;-------------------------------------
    DisplayZero PROC
    ;
    ; Displays a zero character
    ; Receives: nothing
    ; Returns: nothing
    ;-------------------------------------
    push eax
    mov al,'0' ; char to display call WriteChar
    pop eax ret
    DisplayZero ENDP
    END main
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Novice (500 - 999 posts)

    Join Date
    May 2007
    Posts
    765
    Rep Power
    929
    You'll find these forums a lot more helpful if you:

    (1) Place [code][/code] tags around source code so that we have a chance of reading it.

    (2) Ask a question and/or show the exact error message you're getting and/or show what output you're expecting vs what you're getting. -- E.g. don't just post your homework here as the sticky thread at the top of the forum says we will not do it for you.
    sub{*{$::{$_}}{CODE}==$_[0]&& print for(%:: )}->(\&Meh);

IMN logo majestic logo threadwatch logo seochat tools logo