书中例题通过重新编写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
这两个问题我自己还没有解决,
希望大家一起讨论!!
- [游客] 接下来的呢? 07/06 18:01
- [游客] 这个简单。 07/05 18:56
- [游客] 分析的不错,得出的结论也正确,这下子就理解清楚了。 12/18 22:09
- [yugong] 一定要把它搞定!!! 12/11 22:11
- [游客] 再把研究好好研究研究,一定能做出来。 12/11 21:52
- [yugong] younggay,你知道上面3中那个问题吗? 12/10 16:52
- [younggay] 嗯。不错。 12/09 22:09
- [younggay] 大歌们谁能告诉我汇编屏幕分辨率80*25和字体用彩色 -------------- 自己按照《汇 12/09 22:06
- [游客] 用汇编剖析C语言,确实很牛很强大。 12/09 10:24
- [zrwxj3581] 大歌们谁能告诉我汇编屏幕分辨率80*25和字体用彩色 12/09 09:37
- [jcw2008] 元旦快乐! 12/31 23:58
- [jcw2008] Merry Christmas! 12/25 01:17
- [yugong] 字体用彩色请参考实验9的资料! 12/09 20:31
- [zrwxj3581] 大歌们谁能告诉我汇编屏幕分辨率80*25和字体用彩色 12/09 09:35