Команды ввода/вывода IN и OUT пересылают данные между портами ввода/вывода и регистрами EAX (32-разрядный ввод/вывод), AX (16- разрядный ввод/вывод) и AL (8-разрядный ввод/вывод). Команды IN и OUT адресуют порты ввода/вывода либо напрямую, по адресу одного из 256 портов, задаваемому непосредственно в команде, либо косвенно, при помощи адреса в регистре DX, позволяющего выбрать один из 64К адресов порта. Эти команды синхронизируют выполнение программы с работой внешнего аппаратного обеспечения. Буферы записи процессора i486 очищаются, а выполнение программы откладывается до тех пор, пока не будет получен сигнал готовности (ready) последнего цикла шины.
IN (Ввод из порта) пересылает байт, слово или двойное слово из порта ввода в регистры AL, AX или EAX. Байтовая команда IN пересылает из выбранного порта 8 битов в регистр AL. Команда IN, работающая со словами, переносит из порта 16 битов в регистр AX. Команда IN, работающая с двойными словами, переносит из порта 32 бита в регистр EAX.
OUT (Вывод из порта) пересылает байт, слово или двойное слово в порт вывода из регистров AL, AX или EAX. Байтовая команда OUT пересылает в выбранный порт 8 битов из регистра AL. Команда OUT, работающая со словами, переносит в порт 16 битов из регистра AX. Команда OUT, работающая с двойными словами, переносит в порт 32 бита из регистра EAX.