2016-02-28 42 views
0

我想製作一個顯示日期(月,日,年)的程序。月份和日期顯示正確,但是年份很糟糕。請注意,寄存器dh =月,dl =日,cx =年。這裏是我的代碼:如何使用PCMAC.INC顯示日期

INCLUDE PCMAC.INC 
    .MODEL SMALL 
    .586 
    .STACK 100h 

    .DATA 
Message DB 'Today is $' 
Slash DB '/' 
Month DW ? 
Day DW ? 
Year DW ? 

    .CODE 
    EXTRN PutDec : NEAR 
Hello PROC 
    _Begin 
    _GetDate 

    mov al, dh 
    mov ah, 0 
    call PutDec 

    mov al, dl 
    mov ah, 0 
    call PutDec 

    mov ax, cx 
    mov ah, 0 
    call PutDec 

    _Exit 0; 
Hello ENDP 
    END Hello; 
+1

你知道你設置CX斧,然後立即覆蓋的啊? – usr2564301

+0

呵呵,謝謝解決了這個問題。 – user190494

回答

0
INCLUDE PCMAC.INC 
    .MODEL SMALL 
    .586 
    .STACK 100h 

    .DATA 
Message DB 'Today is $' 
Month DB ? 
Day DB ? 
Year DW ? 

    .CODE 
    EXTRN PutDec : NEAR 
Hello PROC 
    _Begin 
    _GetDate 

    mov al, dh 
    mov ah, 0 
    mov Month, al 
    ;call PutDec 

    mov al, dl 
    mov ah, 0 
    mov Day, al 
    ;call PutDec 

    mov ax, cx 
    mov Year, ax 
    ;call PutDec 

    mov al, Month 
    mov ah, 0 
    call PutDec 
    _PutCh '/' 

    mov al, Day 
    mov ah, 0 
    call PutDec 
    _PutCh '/' 

    mov ax, Year 
    call PutDec 

    _Exit 0; 
Hello ENDP 
    END Hello; 
+0

爲什麼不直接寫'mov ax,cx'?不需要填寫* Year *變量,也不需要填寫* Month *和* Day *變量。 –

+1

爲了加斜線,你必須調用_PutCh,它清除了dl寄存器。所以我使用day變量在刪除之前保存日期。 – user190494

+0

您可以直接從DH,DL和CX設置變量。無需先分配給AL/AX。 –