汇编:键盘中断(int 9)
生活随笔
收集整理的这篇文章主要介绍了
汇编:键盘中断(int 9)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
键盘中断, 一般按下键盘上的某个按钮就会触发键盘中断.
assume cs:code, ds:data, ss:stackdata segmentdb 128 dup(0) data endsstack segment stackdb 128 dup(0) stack endscode segmentstart: mov ax, stackmov ss, axmov sp, 128call cpy_new_int9call set_old_int9 call set_new_int9testA: mov ax, 1000Hjmp testAcall set_init_int9mov ax, 4C00Hint 21H;======================================= set_init_int9:mov bx, 0mov es, bxclipush es:[200H]pop es:[9*4]push es:[202H]pop es:[9*4+2]stiret ;======================================= set_new_int9: push bxpush esmov bx, 0mov es, bxclimov word ptr es:[9*4], 7E00Hmov word ptr es:[9*4+2], 0stipop espop bxret ;======================================== set_old_int9:push bxpush esmov bx, 0mov es, bxclipush es:[9*4]pop es:[200H] ; int9 ippush es:[9*4+2]pop es:[202H] ; int9 csstipop espop bxret ;========================================= new_int9:push axin al, 60Hpushfcall dword ptr cs:[200H]cmp al, 48H ; 方向键-- 上 扫描码je isUpcmp al, 50H ; 方向键-- 下 扫描码je isDowncmp al, 3BH ; F1 扫描码jne int9Retcall change_screen_colorint9Ret: pop axiret ;============================================================ isUp:mov di, 160*10+40*2mov bx, 0B800Hmov es, bxmov byte ptr es:[di], 'U'jmp int9Ret;============================================================ isDown:mov di, 160*10+40*2mov bx, 0B800Hmov es, bxmov byte ptr es:[di], 'D'jmp int9Ret ;============================================================ change_screen_color:push bxpush cxpush esmov bx, 0B800Hmov es, bxmov bx, 1mov cx, 2000 ; 整个屏幕是 25行 80列, 1列是2个字节, 所以一行一共160个字节changeColor: inc byte ptr es:[bx];mov byte ptr es:[bx], 01000001Badd bx, 2loop changeColorpop espop cxpop bxret new_int9_end: nop;======================================== cpy_new_int9:mov bx, csmov ds, bxmov si, OFFSET new_int9mov bx, 0mov es, bxmov di, 7E00Hmov cx, OFFSET new_int9_end - OFFSET new_int9cldrep movsbretcode endsend start当按下"F1"键,会改变屏幕颜色, 当按 "上方向键",会在屏幕上打印"U", 按“下方向键”,会在屏幕上打印"D"
总结
以上是生活随笔为你收集整理的汇编:键盘中断(int 9)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 程序和生活
- 下一篇: 汇编: 描述内存长度