我正在阅读一些Linux代码.keyboard.S有类似的东西
outb %al,$0x61
Run Code Online (Sandbox Code Playgroud)
和
inb $0x61,%al
Run Code Online (Sandbox Code Playgroud)
我认为待定的'b'意味着'字节',但我仍然无法找到这些指令的含义.
我很难理解中断是如何工作的.
下面的代码初始化可编程中断控制器
#define PIC0_CTRL 0x20 /* Master PIC control register address. */
#define PIC0_DATA 0x21 /* Master PIC data register address. */
/* Mask all interrupts*/
outb (PIC0_DATA, 0xff);
/* Initialize master. */
outb (PIC0_CTRL, 0x11); /* ICW1: single mode, edge triggered, expect ICW4. */
outb (PIC0_DATA, 0x20); /* ICW2: line IR0...7 -> irq 0x20...0x27. */
outb (PIC0_DATA, 0x04); /* ICW3: slave PIC on line IR2. */
outb (PIC0_DATA, 0x01); /* ICW4: 8086 mode, normal EOI, non-buffered. */
/* Unmask …Run Code Online (Sandbox Code Playgroud) 我想了解以下代码:
#include<stdio.h>
#include<stdlib.h>
#include<sys/io.h>
#define baseport 0x378
int main()
{
int b;
if(ioperm(baseport,3,1))
{
perror("ioperm");
exit(1);
}
outb(0,baseport);
usleep(1000000);
printf("\n the status: %x,\n",inb(baseport));
if (ioperm(baseport,3,0)) {perror("ioperm"); exit(1);}
exit(0);
}
Run Code Online (Sandbox Code Playgroud)
输出为0xff,十进制为255,无论是写入端口1还是端口0(使用outb()).当我写0时,我无法理解为什么它是255.