Для взаимодействия с устройствами ввода-вывода на языке программирования C в операционной системе Linux можно использовать механизмы работы с файлами. В Linux устройства ввода-вывода представлены в виде специальных файлов в файловой системе. Например, для работы с последовательным портом можно открыть соответствующий файл /dev/ttyS0 и прочитать/записать данные в этот файл.
Чтобы узнать, как взаимодействовать с устройствами через порты, перечисленные в /proc/ioports, можно изучить документацию по программированию драйверов устройств в Linux. Также можно использовать библиотеку libpci для работы с устройствами PCI. Для проверки доступа к портам можно также использовать команду lspci, которая отображает информацию об устройствах PCI, и lsusb - для устройств USB.
Отдельно стоит отметить, что доступ к портам в Linux обычно ограничен правами доступа и требует выполнения программы с правами суперпользователя. Использование языка ассемблера не обязательно для взаимодействия с устройствами ввода-вывода, все операции можно выполнить только на C, однако для определенных низкоуровневых операций может потребоваться знание ассемблера.