-4
このコードは、年:月:日の形式で日付を表示する必要がありますが、年は20f4、日は58と表示され、理由を特定できません。あなたはここでしかCL
レジスタを使用しないのはなぜアセンブリプログラムの出力が正しくありません
; return: CX = year (1980-2099). DH = month. DL = day. AL = day of week (00h=Sunday)
displaydate:
mov ah,2Ah
int 21h ; get date
mov dl,' '
mov ah,02h
int 21h
mov dl,' '
mov ah,02h
int 21h
mov dl,'2'
mov ah,02h
int 21h
mov dl,'0'
mov ah,02h
int 21h
mov al,cl ; year
mov ah,0
mov bl,10
div bl
mov years1,al ; number
mov years2,ah ;remainder
add years1,30h
add years2,30h;asci code
mov dl,years1
mov ah,02h
int 21h
mov dl,years2
mov ah,02h
int 21h
mov dl,':'
mov ah,02h
int 21h
;---------------------------------------------
mov al,dh ;months
mov ah,0
mov bl,10
div bl
mov month1,al ; number
mov month2,ah ;remainder
add month1,30h
add month2,30h;asci code
mov dl,month1
mov ah,02h
int 21h
mov dl,month2
mov ah,02h
int 21h
mov dl,':'
mov ah,02h
int 21h
;-------------------------------------------------
mov al,DL ;days
mov ah,0
mov bl,10
div bl
mov days1,al ; number
mov days2,ah ;remainder
add days1,30h
add days2,30h;asci code
mov dl,days1
mov ah,02h
int 21h
mov dl,days2
mov ah,02h
int 21h
:日の値を失うしないように
push
/pop
使用してください。非常に最初のものは、「デバッガを使ってステップを進め、あなたが理解していない振る舞いをいつ始めるかを確認してください」。多くの場合、これは* you *が問題を解決することを可能にします。 –