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

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  相信自己,没有什么是不可能的.
  • 『姓名』:保密
  • 『性别』:男『发送消息
  • 个人说明:我是一个电脑爱好者,同时也喜欢音乐,喜欢静静地思考,不喜欢体育,也不喜欢太喧嚣的地方。
  • 详细信息『加为好友』
学习动态
文章收藏
友情链接

[2009-09-11 16:19] 在屏幕中间依次显示a-z26个字母,在显示过程中按ESC键改变字体颜色。

assume cs:code,ds:data,ss:stack
data segment;定义两个字的空间以存放原来的中断地址
        dw 0,0
data ends
stack segment;定义128个字节的栈段,以存储数据
        db 128 dup (0)
stack ends
code segment
        
start:        mov ax,data
        mov ds,ax
        mov ax,stack
        mov ss,ax
        mov sp,128
        mov ax,0
        mov es,ax
        push es:[9*4];此为IP地址
        pop ds:[0]
        push es:[9*4+2]
        pop ds:[2]
        cli;屏蔽中断
        mov  word ptr es:[9*4],offset wodezhongduan
        mov es:[9*4+2],cs
        sti;还原中断
;===========以上将原9号中断的处理程序地址存入内存中,并将新的中断地址写入中断向量表中
        mov ax,0b800h
        mov es,ax
        mov di,160*12+80
        mov bl,'a'
s:        mov es:[di],bl
        call xunhuan
        cmp bl,'z'
        je s3
        inc bl
        jmp short s                
        
        
s3:        mov ax,0
        mov es,ax
        push ds:[0]
        pop es:[9*4]
        push ds:[2]
        pop es:[9*4+2] 
        mov ax,4c00h
        int 21h
wodezhongduan:
        push ax;因为要用到AL来与端口通信,所以将它入栈。
        push di
        in al,60h;获取端口扫描码信息
        pushf
        call dword ptr ds:[0];调用原来的中断处理程序处理硬件细节
        cmp al,1;判断按下的是否是ESC键
        jne s1
        mov ax,0b800h
        mov es,ax
        mov di,160*12+80
        mov byte ptr es:[di+1],00000100b
s1:        pop di
        pop ax
        iret
        
xunhuan:
        push ax
        push dx
        mov ax,0
        mov dx,1000h
s2:        sub ax,1
        sbb dx,1
        cmp ax,0
        jne s2        
        cmp dx,0
        jne s2
        pop dx
        pop ax
        ret
code ends
end start
评论次数(1)  |  浏览次数(599)  |  类型(汇编作业) |  收藏此文  | 

[  wsrf   发表于  2009-09-16 08:17  ]

要求是在显示过程中只要按下ESC键,字母的颜色就要发生一次改变。

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