进入保护模式(九)键盘中断的实现

一、每次都写个题记

       我的电脑键盘映射对应第一个:http://www.brokenthorn.com/Resources/OSDevScanCodes.html

            说了好多,其实看不太懂:http://www.brokenthorn.com/Resources/OSDev19.html

       端口操作两个:0x60(数据端口)  0x64(命令端口)

       注意点:1.中段结束EOI发送

                  2.键盘如果不读取内容,是自动添置的,下一次数据填充不进来的

                  3.键盘每次有两次数据的 mark break(过滤掉)

                  4.很蛋疼一点 每次端口读写的时候注意 xor eax,eax

       键盘中断实现步骤1.前面说过的实例化中断对应的中断向量,开启键盘中断

                            2.通过60读取内容,查找对应的数据

                            3.上面的注意点,

                            好了一个简单的键盘中断可以工作了

二、代码

;键盘中断的处理
key_interrupt:
                            pushad
			xor eax,eax
			  
                             mov al,0x20                        ;中断结束命令EOI
                            out 0xa0,al                        ;向8259A从片发送
                                 out 0x20,al
			  
                             mov al,0xAD                        ;关闭键盘
			  out 0x64,al
			  
			  ;获取状态
			  in al,0x64
			  test al,0x01
			  jz .end                            ;结束 输出缓冲区没有内容
			  
			  
			  in al,0x60                         ;读取数据
			  test al,0x80
			  jnz .end
			  
			  mov ecx,eax
                             ;得到数据段的地址
                                  mov eax,core_data_seg_sel
                             mov ds,eax
                             mov ebx,key_map
                             mov byte cl,[ebx+ecx]			  

			  call put_char
			  
        .end:	
                             mov al,0xAE                        ;开启键盘
			  out 0x64,al
			  
			  popad
                             iret

下面是个效果图:

 

转载于:https://my.oschina.net/findurl/blog/188884

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值