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

我的博客

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

[2008-12-05 16:40] 第15章 P276程序的另一种思考

书中例题通过重新编写int 9中断例程,来达到目的。
但是我看到第17章时,介绍了用int 16h中断从键盘缓冲区读取数据,从而我产生了一种想法。

不用重新编写以及安装int 9 例程,而直接用int 16中断服务从缓冲区读取数据,如果是ESC,则改变颜色。
 
   程序如下:
assume cs:code
stack segment
  db 10 dup (0)
stack ends

code segment
 start:
        mov ax,stack
        mov ss ,ax
        mov sp,10
                
        mov ax,0b800h
        mov es,ax
        
        mov ch,'a'
    s: mov es:[160*12+40*2],ch
       mov ah,0
       int 16h  
       cmp ah,01h   ;Esc的扫描码是01h,按Esc后改变颜色
       je change

       inc ch
       cmp ch,'z'
       jna s        
                    
    mov ax,4c00h
    int 21h
        
  change:
         push ax
         mov ax,0b800h
         mov es,ax
         inc byte ptr es:[160*12+40*2+1]
        pop ax
         ret                 
code ends
end start        
可是这个程序有两个问题1、不是自动显示,而是按一下键盘才显示
                      2、按下Esc后颜色变后,字符又显示a
这两个问题我自己还没有解决,
希望大家一起讨论!!
评论次数(2)  |  浏览次数(724)  |  类型(汇编作业) |  收藏此文  | 

[  starrynight   发表于  2008-12-06 12:15  ]

好想法!!
我去试试

[  yugong   发表于  2008-12-07 22:04  ]

谢谢,试后结果怎么样,我明天上机试试

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