. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->端口
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  试验14完成。  [待解决] 回复[ 2次 ]   点击[ 561次 ]  
jiych
[帖 主]   [ 发表时间: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
ouxmm
[第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

确实太不简练了。我第一个也用的你的方法,
觉得太多了,自己都看不下去了,这个是第二次写的,弄出来自己都不敢相信代码量相差这么多。做法有千千万万,看来还是要多思考。
qingfeng203
[第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
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved