汇编网首页登录博客注册
ltp1234的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
好友圈
文章收藏
友情链接

[2012-05-16 19:24] 实验14,

图片载入中
将之前做的显示字符串拿来直接用了,发现确实后面的内容得靠前面掌握才能进行饿。代码如下:
assume cs:code
data segment
                db 32 dup(0)
data ends
stack segment
                db 16 dup(0)
stack ends
code segment
                mov ax,data
                mov ds,ax
                mov si,0
                mov ax,stack
                mov ss,ax
                mov sp,16
        ;==读取年份==
                mov cx,4
                mov al,9
                out 70h,al
                in al,71h
                mov ah,al
                shr al,cl
                add al,30h
                mov ds:[si],al
                add si,2
                and ah,00001111b
                add ah,30h
                mov ds:[si],ah
                add si,2
                mov ds:[si],'/'
                add si,2
        ;==读取月份==
                mov al,8
                out 70h,al
                in al,71h
                mov ah,al
                shr al,cl
                add al,30h
                mov ds:[si],al
                add si,2
                and ah,00001111b
                add ah,30h
                mov ds:[si],ah
                add si,2
                mov ds:[si],'/'
                add si,2
        ;==读取日==
                mov al,7
                out 70h,al
                in al,71h
                mov ah,al
                shr al,cl
                add al,30h
                mov ds:[si],al
                add si,2
                and ah,00001111b
                add ah,30h
                mov ds:[si],ah
                add si,2
                mov ds:[si],' '
                add si,2
        ;==读取小时==
                mov al,4
                out 70h,al
                in al,71h
                mov ah,al
                shr al,cl
                add al,30h
                mov ds:[si],al
                add si,2
                and ah,00001111b
                add ah,30h
                mov ds:[si],ah
                add si,2
                mov ds:[si],':'
                add si,2
        ;==读取分钟==
                mov al,2
                out 70h,al
                in al,71h
                mov ah,al
                shr al,cl
                add al,30h
                mov ds:[si],al
                add si,2
                and ah,00001111b
                add ah,30h
                mov ds:[si],ah
                add si,2
                mov ds:[si],':'
                add si,2
        ;==读取秒钟==
                mov al,0
                out 70h,al
                in al,71h
                mov ah,al
                shr al,cl
                add al,30h
                mov ds:[si],al
                add si,2
                and ah,00001111b
                add ah,30h
                mov ds:[si],ah
                add si,2
                
                mov si,0
                mov dh,12
                mov dl,40
                mov cl,2
                call show_str
                
                mov ax,4c00h
                int 21h
                
        ;==显示字符串show_str==
;参数:(dh)=行号(取值范围0-24),(dl)=列号(取值范围0-79)
;      (cl)=颜色,ds:si指向字符串的首地址
;返回:无
show_str:        
                push bp
                push bx
                push ax
                push di
                push si
                mov ax,0B800h
                mov es,ax
                mov al,dh
                mov bl,160
                mul bl
                mov di,ax
                mov al,dl
                mov bl,2
                mul bl                ;偏移地址=dh*160+dl*2
                add di,ax        ;di存显存缓冲区的偏移地址,es存段基址
                mov bl,cl         ;bl暂存cl的颜色值,好像只有bx可用了,要不cl的值就要入栈了
s1:        
                mov al,ds:[si]
                mov ah,bl
                mov es:[di],ax
                mov cl,ds:[si]
                mov ch,0
                add si,2
                add di,2
                jcxz s2
                jmp short s1
s2:        
                pop si
                pop di
                pop ax
                pop bx
                pop bp
                ret
        
code ends
end
评论次数(2)  |  浏览次数(633)  |  类型(汇编作业) |  收藏此文  | 

[  tomato   发表于  2012-05-16 22:02  ]

可以来个循环执行。

[  ltp1234   发表于  2012-05-16 22:36  ]

恩,明白,看别人说可以动态,我一想也是,最后加上jmp语句应该就可以了。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码