博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
汇编语言 外部中断
阅读量:3960 次
发布时间:2019-05-24

本文共 1732 字,大约阅读时间需要 5 分钟。

外部中断,也称为硬件中断,它们从8086的不可屏蔽中断引脚NMI或可屏蔽中断引脚 INTR 引入。从INTR脚上来的请求信号,CPU可以立即响应,也可以暂时不响应。如果CPU内部标志寄存器中的IF置1,则允许响应这类中断;若IF标志为0,则不予响应。

以下是从键盘输入产生中断响应,改变二进制的值的程序代码。

assume cs:code, ds:data, ss:stackdata segment		db 128 dup(0)data endsstack segment stack		db 128 dup(0)stack endscode segment 		start:  mov ax, stack				mov ss, ax				mov sp, 128								call init_reg				call show_keyword_status								mov ax, 4C00H				int 21Hinit_reg:				mov bx, 0B800H				mov es, bx								mov bx, 40H				mov ds, bx				ret;===============================================================		show_status:	push cx				push dx				push ds				push es				push si				push di								mov cx, 8showStatus:		mov dx, 0			;Shl shr  				shl al, 1			; CF = 1     '1'				adc dx, 30H				mov es:[di], dl				add di, 2				loop showStatus								pop di				pop si				pop es				pop ds				pop dx				pop cx				ret		show_keyword_status:				mov si, 17HtestA:			mov al, ds:[si]				mov di, 160 * 10 + 40 * 2				call show_status				jmp testA								ret							code endsend start

键盘什么都不按的情况下,如下所示

在这里插入图片描述

当按下 Ctrl 和 Alt键产生中断响应 数值会变为 00101100

在这里插入图片描述
当按下Insert 键 数值会变为 10100000
在这里插入图片描述
按下 Capslock键 数值会变为 01100000
在这里插入图片描述
还可以按下左右两边的Shift键会让右边的第一位和第二位发生变化。

总结:

1.读出60H端口的扫描码
2.如果是字符键的扫描,将这个扫描码和对应的 ASCII放到BIOS中的键盘缓冲区
3.对键盘系统的相关控制
4.扫描码 按下去为通码,松开为断码
- 断码 = 通码 + 80H

键盘缓冲区大小为 15字型数据

  • 高位字节存放扫描码
  • 低位字节存放 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

转载地址:http://ebqzi.baihongyu.com/

你可能感兴趣的文章
C# string.Format使用说明
查看>>
Linux下安装Mysql数据库开发环境
查看>>
Linux用户及用户组添加和删除操作
查看>>
通用 Makefile 的编写方法以及多目录 makefile 写法
查看>>
C++的4种智能指针剖析使用
查看>>
RPC框架实现之容灾策略
查看>>
Docker私库
查看>>
hdu——1106排序(重定向)
查看>>
hdu——1556Color the ball(树状数组)
查看>>
hdu——1541Stars(树状数组)
查看>>
快速幂的精简代码
查看>>
求大数乘方的前n位数字(对数加快速幂)
查看>>
hdu——2602Bone Collector(第一类背包问题)
查看>>
hdu——1711Number Sequence(kmp专练)
查看>>
strstr函数和find函数的异同
查看>>
Java的反射
查看>>
HTTP请求之POST与GET区别
查看>>
SSM结合Redis
查看>>
优化数据库的八种方法
查看>>
Java Web服务收到请求时线程的情况以及session情况
查看>>