汇编语言 外部中断
外部中斷,也稱為硬件中斷,它們從8086的不可屏蔽中斷引腳NMI或可屏蔽中斷引腳 INTR 引入。從INTR腳上來(lái)的請(qǐng)求信號(hào),CPU可以立即響應(yīng),也可以暫時(shí)不響應(yīng)。如果CPU內(nèi)部標(biāo)志寄存器中的IF置1,則允許響應(yīng)這類中斷;若IF標(biāo)志為0,則不予響應(yīng)。
以下是從鍵盤(pán)輸入產(chǎn)生中斷響應(yīng),改變二進(jìn)制的值的程序代碼。
assume cs:code, ds:data, ss:stackdata segmentdb 128 dup(0) data endsstack segment stackdb 128 dup(0) stack endscode segment start: mov ax, stackmov ss, axmov sp, 128call init_regcall show_keyword_statusmov ax, 4C00Hint 21Hinit_reg:mov bx, 0B800Hmov es, bxmov bx, 40Hmov ds, bxret ;=============================================================== show_status: push cxpush dxpush dspush espush sipush dimov cx, 8showStatus: mov dx, 0 ;Shl shr shl al, 1 ; CF = 1 '1'adc dx, 30Hmov es:[di], dladd di, 2loop showStatuspop dipop sipop espop dspop dxpop cxretshow_keyword_status:mov si, 17HtestA: mov al, ds:[si]mov di, 160 * 10 + 40 * 2call show_statusjmp testAretcode endsend start鍵盤(pán)什么都不按的情況下,如下所示
當(dāng)按下 Ctrl 和 Alt鍵產(chǎn)生中斷響應(yīng) 數(shù)值會(huì)變?yōu)?00101100
當(dāng)按下Insert 鍵 數(shù)值會(huì)變?yōu)?10100000
按下 Capslock鍵 數(shù)值會(huì)變?yōu)?01100000
還可以按下左右兩邊的Shift鍵會(huì)讓右邊的第一位和第二位發(fā)生變化。
總結(jié):
1.讀出60H端口的掃描碼
2.如果是字符鍵的掃描,將這個(gè)掃描碼和對(duì)應(yīng)的 ASCII放到BIOS中的鍵盤(pán)緩沖區(qū)
3.對(duì)鍵盤(pán)系統(tǒng)的相關(guān)控制
4.掃描碼 按下去為通碼,松開(kāi)為斷碼
- 斷碼 = 通碼 + 80H
鍵盤(pán)緩沖區(qū)大小為 15字型數(shù)據(jù)
- 高位字節(jié)存放掃描碼
- 低位字節(jié)存放 ASCII碼
掃描碼
| ESC | 01 |
| 1~0 | 02~0A |
| 0 | 0B |
| - | 0C |
| = | 0D |
| Bakspace | )E |
| Tab | 0F |
| Q | 10 |
| W | 11 |
| E | 12 |
| R | 13 |
| T | 14 |
| Y | 15 |
| U | 16 |
| I | 17 |
| O | 18 |
| P | 19 |
| [ | 1A |
| ] | 1B |
| Enter | 1C |
| Ctrl | 1D |
| A | 1E |
| S | 1F |
| D | 20 |
| F | 21 |
| G | 22 |
| H | 23 |
| J | 24 |
| K | 25 |
| L | 26 |
| ; | 27 |
| , | 28 |
| 、 | 29 |
| Shift(左) | 2A |
| \ | 2B |
| Z | 2C |
| X | 2D |
| C | 2E |
| V | 2F |
| B | 30 |
| M | 31 |
| N | 32 |
| , | 33 |
| . | 34 |
| / | 35 |
| Shift(右) | 36 |
| Prtsc | 37 |
| Alt | 38 |
| Space | 39 |
| Caps | Lock |
| F1~F10 | 3B~44 |
| NumLock | 45 |
| ScrollL0ck | 46 |
| Home | 47 |
| 上 | 48 |
| pageUp | 49 |
| - | 4A |
| 左 | 4B |
| 右 | 4D |
| + | 4E |
| End | 4F |
| 下 | 50 |
| pageDown | 51 |
| Ins | 52 |
| Del | 53 |
總結(jié)
- 上一篇: 汇编 输入输出指令
- 下一篇: 汇编语言 判断学生成绩是否及格