老师给的操作系统ucore实验指导书是这样写的。
1. 等待8042 Input buffer为空;
2. 发送Write 8042 Output Port (P2)命令到8042 Input buffer;
3. 等待8042 Input buffer为空;
4. 将8042 Output Port(P2)得到字节的第2位置1,然后写入8042 Input buffer;
但是代码是这样写的
seta20.1:
inb $0x64, %al # Wait for not busy(8042 input buffer empty).
testb $0x2, %al
jnz seta20.1
movb $0xd1, %al # 0xd1 -> port 0x64
outb %al, $0x64 # 0xd1 means: write data to 8042's P2 port
这里有一句等待8042的input buffer缓冲区清空,但是代码里面没有清空指令,只是想问这个等待缓冲区为空,是定时清空一次的?还是另外调用程序清空的?