2016-02-28 72 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。 –