|
|
h80053
銀驢友〔中級〕
. 積分: 720
. 精華: 1
. 文章: 2053
. 收花: 5801 支
. 送花: 8430 支
. 比例: 1.45
. 在線: 2473 小時
. 瀏覽: 17320 頁
. 註冊: 7414 天
. 失蹤: 313 天
. 台中 |
|
|
|
|
|
|
#1 : 2007-5-22 06:42 PM
只看本作者
|
送花
(0)
送出中...
|
|
|
首先先介紹一下他的功能:
INT 21H 的 2AH 功能執行之後
會把年 1980~2099 以 16 進制的碼 , 儲存於 CX , DH=月(1~12) , DL=日(1~31)
我本來是想用迴圈去寫,但是我寫不出來@@.
問了同學後我沒有用迴圈去做.
我們不用想也知道,今年一定是2007年.所以做出來的值一定要2007才正確.
但電腦上面顯示的是16位元的碼,所以要先除成10進位的碼我們才看的清楚.
先用小算盤的值給大家看
1.現在小算盤顯示的值為2007(10進制)
2.現在為2007的16進制
3.前面說過要讓16進制除10才會變成10進制以下為結果
除法必須要用16位元的除法器下去除.因為2007>255.
2^8=255所以用8位元除法是不夠的.
接著要把餘數提出來,餘數是我們要的.(剛剛小算盤沒有顯示餘數出來,但是以存到DX中)
===========以下為程式 PS:我現在只有做到顯示年份
.model small
.data
buffer word 10,?,10dup(?)
ccc byte 10,?,10dup(?)
STRING BYTE "***************************************",10,13
BYTE " NOW TIME IS ",10,13
BYTE "***************************************",10,13,"$"
.code
.startup
.STARTUP
MOV DX,OFFSET STRING
MOV AH,09
INT 21H
mov ah,2ah
int 21h
;=======
mov dx,0
mov ax,cx
mov bX,10
div bX
add dx,30h
mov dh,0
mov ccc[1],dl
mov dx,0
mov cx,ax
mov ax,cx
mov bx,10
div bx
add dx,30h
mov dh,0
mov ccc[2],dl
mov dx,0
mov cx,ax
mov ax,cx
mov bx,10
div bx
add dx,30h
mov dh,0
mov ccc[3],dl
mov dx,0
mov cx,ax
mov ax,cx
mov bx,10
div bx
add dx,30h
mov dh,0
mov ccc[4],dl
mov dl,ccc[4]
mov ah,02
int 21h
mov dl,ccc[3]
mov ah,02
int 21h
mov dl,ccc[2]
mov ah,02
int 21h
mov dl,ccc[1]
mov ah,02
int 21h
;========
.exit
.stack
end
=========
等等在補齊
[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
|
|