@ -0,0 +1,49 @@
.globl mouse_interrupt
mouse_interrupt:
pushl %eax
pushl %ebx
pushl %ecx
pushl %edx
push %ds
movl $0x10,%eax
mov %ax,%ds !为后面的call做准备
inb %ax,%ds
!call readmouse !调用c函数进行细致处理
!鼠标对应数据寄存器端口是$0x60,通过inb命令将该数据寄存器中
!存放的一个字节信息读入到寄存器AL中,
!用户对鼠标的全部信息包含在这一个字节的数据编码里
xor %eax,%eax
inb $0x60,%al
call readmouse
addl $4,%esp
inb $0x60,%al !读入鼠标数据
!在mouse_interupt 处理完中断以后,给8259A发送结束中断(EOI)指令
movb $0x20,%al
outb %al,$0xA0
outb %al,$0x20
pop %ds
popl %edx
popl %ecx
popl %ebx
popl %eax
iret