汇编:键盘中断(int 9)
生活随笔
收集整理的這篇文章主要介紹了
汇编:键盘中断(int 9)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?鍵盤中斷, 一般按下鍵盤上的某個按鈕就會觸發(fā)鍵盤中斷.
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個字節(jié), 所以一行一共160個字節(jié)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)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序和生活
- 下一篇: 汇编: 描述内存长度