1 assume cs:code 2 3 data segment 4 db 9,8,7,4,2,0 5 db 0,3,6,9,12,15 6 data ends 7 8 stack segment 9 dw 16 dup (0) 10 stack ends 11 12 code segment 13 begin: 14 mov ax,stack 15 mov ss,ax 16 mov sp,20h 17 18 mov ax,0b800h 19 mov es,ax 20 mov di,0 21 22 mov ax,data 23 mov ds,ax 24 again: 25 mov si,0 26 mov di,160*10+60 27 call clear_screen 28 mov byte ptr es:[di+4],'/' 29 mov byte ptr es:[di+5],2 30 mov byte ptr es:[di+10],'/' 31 mov byte ptr es:[di+11],2 32 mov byte ptr es:[di+22],':' 33 mov byte ptr es:[di+23],2 34 mov byte ptr es:[di+28],':' 35 mov byte ptr es:[di+29],2 36 37 mov cx,6 38 s0: 39 call shuchu 40 inc si 41 loop s0 42 jmp again 43 44 mov ax,4c00h 45 int 21h 46 47 shuchu: 48 push ax 49 push cx 50 push di 51 52 mov al,ds:[si+6] 53 mov ah,0 54 add di,ax 55 add di,ax 56 57 mov al,ds:[si] 58 out 70h,al 59 in al,71h 60 61 mov ah,al 62 mov cl,4 63 shr ah,cl 64 and al,00001111b 65 add ah,30h 66 add al,30h 67 mov byte ptr es:[di],ah 68 mov byte ptr es:[di+1],2 69 mov byte ptr es:[di+2],al 70 mov byte ptr es:[di+3],2 71 72 pop di 73 pop cx 74 pop ax 75 ret 76 77 clear_screen: 78 push cx 79 push di 80 mov di,160*10 81 mov cx,80 82 scs0: 83 push cx 84 mov cx,1 85 scs1: 86 mov word ptr es:[di],0 87 add di,2 88 loop scs1 89 pop cx 90 loop scs0 91 pop di 92 pop cx 93 ret 94 95 code ends 96 end begin