汇编程序49:实验14 访问CMOS RAM(显示系统时间)

 1 assume cs:code
 2 ;安装程序,使用指令out和in指令
 3 code segment
 4     start:
 5           mov ax,cs
 6           mov ds,ax
 7           mov si,offset sub1
 8           mov ax,0020h
 9           mov es,ax
10           mov di,0
11           mov cx,offset sub2 - offset sub1
12           cld 
13           rep movsb ;复制程序
14 
15           mov ax,0
16           mov es,ax
17           mov word ptr es:[7ch*4],200h
18           mov word ptr es:[7ch*4+2],0
19           mov ax,4c00h
20           int 21h ;入口地址附加
21      sub1:
22           out 70h,al ;向端口70h写入字节数据al
23           in al,71h  ;向端口71h读入字节数据al
24 
25           mov ah,al
26           mov cl,4
27           shr ah,cl ;高位BCD码
28           and al,00001111b ;低位BCD码
29 
30           add ah,30h
31           add al,30h ;转化为ASCLL码
32 
33           mov bx,0b800h
34           mov es,bx
35           mov byte ptr es:[12*160+40*2+di],ah
36           mov byte ptr es:[12*160+41*2+di],al ;向显示屏写入数据
37           
38           add di,4 ;每次偏移+4
39           iret
40      sub2:
41           nop
42 code ends
43 
44 end start

 

 1 assume cs:code
 2 ;测试程序
 3 code segment
 4     start:
 5           mov di,0
 6           mov al,9
 7           int 7ch
 8           mov byte ptr es:[12*160+40*2+di],'/'
 9           add di,2
10           mov al,8
11           int 7ch
12           mov byte ptr es:[12*160+40*2+di],'/'
13           add di,2
14           mov al,7
15           int 7ch
16           mov byte ptr es:[12*160+40*2+di],' '
17           add di,2
18           mov al,4
19           int 7ch
20           mov byte ptr es:[12*160+40*2+di],':'
21           add di,2
22           mov al,2
23           int 7ch
24           mov byte ptr es:[12*160+40*2+di],':'
25           add di,2
26           mov al,0
27           int 7ch
28           mov ax,4c00h
29           int 21h
30 code ends
31 
32 end start

 

posted on 2018-02-04 11:47  叶倾仙  阅读(479)  评论(0编辑  收藏  举报

导航