Все вышесказанное может быть использовано на C++ и Objective C без каких-либо комментариев. На ассемблере (как и на C) перед операциями с портами вы должны выполнить ioperm() или iopl().
На других языках, если вы не можете использовать текст на ассемблере или на C, или выполнить упомянутые системные вызовы, самое простое - написать необходимые процедуры на C и собрать их вместе с оставшейся программой. Или же использовать файл /dev/port.