|
主题 : : 试验14完成。 [待解决] |
回复[ 2次 ]
点击[ 561次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-10-25 22:18 ]
[引用]
[回复]
[ top ] | |
荣誉值:15
信誉值:0
注册日期:2010-06-02 22:04 |
;恩,一直看到坛里好多写的代码简练优美,不过呢还是把自己的贴出来,毕竟自己亲自做的呦。
;ch14
assume cs:code
code segment
start:
;year
mov al, 9
out 70h, al
in al, 71h
mov ah, al
mov cl, 4
shr ah, cl
and al, 00001111b
add ah, 30h
add al, 30h
mov bx, 0b800h
mov es, bx
mov cl, 3
mov es:[160*12+37*2], ah
mov es:[160*12+37*2+1], cl
mov es:[160*12+38*2], al
mov es:[160*12+38*2+1], cl
mov al, '/'
mov cl, 4
mov es:[160*12+39*2], al
mov es:[160*12+39*2+1], cl
;month
mov al, 8
out 70h, al
in al, 71h
mov ah, al
mov cl, 4
shr ah, cl
and al, 00001111b
add ah, 30h
add al, 30h
mov bx, 0b800h
mov es, bx
mov cl, 3
mov es:[160*12+40*2], ah
mov es:[160*12+40*2+1], cl
mov es:[160*12+41*2], al
mov es:[160*12+41*2+1], cl
;day
mov al, 7
out 70h, al
in al, 71h
mov ah, al
mov cl, 4
shr ah, cl
and al, 00001111b
add ah, 30h
add al, 30h
mov bx, 0b800h
mov es, bx
mov cl, 3
mov es:[160*12+42*2], ah
mov es:[160*12+42*2+1], cl
mov es:[160*12+43*2], al
mov es:[160*12+43*2+1], cl
;hour
mov al, 4
out 70h, al
in al, 71h
mov ah, al
mov cl, 4
shr ah, cl
and al, 00001111b
add ah, 30h
add al, 30h
mov bx, 0b800h
mov es, bx
mov cl, 3
mov es:[160*12+45*2], ah
mov es:[160*12+45*2+1], cl
mov es:[160*12+46*2], al
mov es:[160*12+46*2+1], cl
mov al, ':'
mov cl, 4
mov es:[160*12+47*2], al
mov es:[160*12+47*2+1], cl
;minute
mov al, 2
out 70h, al
in al, 71h
mov ah, al
mov cl, 4
shr ah, cl
and al, 00001111b
add ah, 30h
add al, 30h
mov bx, 0b800h
mov es, bx
mov cl, 3
mov es:[160*12+48*2], ah
mov es:[160*12+48*2+1], cl
mov es:[160*12+49*2], al
mov es:[160*12+49*2+1], cl
mov al, ':'
mov cl, 4
mov es:[160*12+50*2], al
mov es:[160*12+50*2+1], cl
;second
mov al, 0
out 70h, al
in al, 71h
mov ah, al
mov cl, 4
shr ah, cl
and al, 00001111b
add ah, 30h
add al, 30h
mov bx, 0b800h
mov es, bx
mov cl, 3
mov es:[160*12+51*2], ah
mov es:[160*12+51*2+1], cl
mov es:[160*12+52*2], al
mov es:[160*12+52*2+1], cl
mov ax, 4c00H
int 21h
code ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-01-11 22:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-11-28 15:59 |
assume cs:code
data segment
db 9,0,'/',8,0,'/',7,0,' ',4,0,':',2,0,':',0,0,'$'
data ends
code segment
start:
mov ax,data
mov ds,ax
mov si,0
mov cl,4
s:
mov al,ds:[si]
out 70h,al
in al,71h
mov ah,al
shr al,cl
and ah,00001111b
add al,30h
add ah,30h
mov ds:[si],ax
cmp si,15
je display
add si,3
jmp short s
display:
mov dx,0
mov ah,9
int 21h
mov ax,4c00h
int 21h
code ends
end start
确实太不简练了。我第一个也用的你的方法,
觉得太多了,自己都看不下去了,这个是第二次写的,弄出来自己都不敢相信代码量相差这么多。做法有千千万万,看来还是要多思考。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2011-01-26 02:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-10-18 00:34 |
assume cs:code
code segment
start:mov al,9
mov di,160*12+37*2
mov ch,"\"
call s
mov al,8
add di,6
call s
mov al,7
add di,6
mov ch,0
call s
mov al,4
add di,10
mov ch,":"
call s
mov al,2
add di,6
call s
mov al,0
add di,6
mov ch,0
call s
mov ax,4c00h
int 21h
s:
push es
push bx
push cx
out 70h,al
in al,71h
mov ah,al
mov cl,4
shr ah,cl
and al,00001111b
add ah,30h
add al,30h
mov bx,0b800h
mov es,bx
mov byte ptr es:[di],ah
mov byte ptr es:[di+1],0cah
mov byte ptr es:[di+2],al
mov byte ptr es:[di+3],0cah
mov byte ptr es:[di+4],ch
pop cx
pop bx
pop es
ret
code ends
end start | | |
|