#include .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 pushl %eax call readmouse addl $4,%esp xor %eax,%eax inb $0x60,%al pushl %eax call readmouse addl $4,%esp xor %eax,%eax inb $0x60,%al #读入鼠标数据 pushl %eax call readmouse addl $4,%esp xor %eax,%eax inb $0x60,%al pushl %eax call readmouse addl $4,%esp #在mouse_interupt 处理完中断以后,给8259A发送结束中断(EOI)指令 movb $0x20,%al outb %al,$0xA0 outb %al,$0x20 pop %ds popl %edx popl %ecx popl %ebx popl %eax iret