; 在某行顯示日期,時間 ; 代碼裏面我寫死成12行了 assume cs:code code segment cmos_arr: db 9, 8, 7, 4, 2, 0 char_arr: ; 這個第一個' ' 空格實際上是一個佔位置用的 db ' ', '/', '/', ' ', ':', ':' start: mov cx, 6 ; 總共有 年月日 時分秒 六個時間信息 mov si, 0 ; 當前訪問的數組的下標 mov dx, 12 ; 存放列的位置 s: cmp si, 0 je jump ; 若是是第一次循環的話, 跳過打印符號 ; 打印符號 mov ax, cs mov ds, ax mov bx, offset char_arr mov al, [bx+si] mov bx, 0b800h mov es, bx mov bx, dx shl bx, 1 mov byte ptr es:[160*12+bx], al inc dx ; 列號日後面移一個格子 jump: ; 獲取cmos裏面的時間信息 mov ax, cs mov ds, ax mov bx, offset cmos_arr mov al, [bx+si] out 70h, al in al, 71h ; 讀取 mov bx, cx ; 備份一下 cx mov ah, al and al, 00001111b mov cl, 4 shr ah, cl mov cx, bx ; 恢復 cx add al, 30h ; 時間的個位 add ah, 30h ; 時間的十位 ; 打印時間信息 mov bx, 0b800h mov es, bx mov bx, dx shl bx, 1 mov byte ptr es:[160*12+bx], ah mov byte ptr es:[160*12+2+bx], al add dx, 2 ; 列號日後面移兩個格子 inc si loop s mov ax, 4c00h int 21h code ends end start