Низкоуровневый доступ к вводу-выводу с использованием outb и inb

Мне трудно понять, как работают прерывания.

приведенный ниже код инициализирует программируемый контроллер прерываний

  #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 all interrupts. */
  outb (PIC0_DATA, 0x00);

может кто-нибудь объяснить мне, как это работает:

- роль outb (я не понял человека по linux)

- адреса и их значение

еще один не связанный с этим вопрос, я читал, что outb и inb предназначены для ввода-вывода с отображением портов, можем ли мы использовать ввод-вывод с отображением памяти для взаимодействия ввода-вывода?

спасибо.

5
задан Kevin Panko 23 May 2014 в 14:37
поделиться