И ещё такой вопрос. Прерывания часто сравнивают с функциями, но в них ничего не передают. Но предварительно заполняют регистры. Правильно ли я понимаю что прерывания берут данные из регистров?
Прерывание это операция процессора. Фактически, это вызов подпрограммы по косвенному адресу, то есть, переход на адрес, значение которого хранится в памяти по другому адресу. В том другом месте находится участок кода, называемый обработчиком прерывания. Поскольку заранее далеко не всегда известно, где в памяти находится что, то программисты договорились передавать значения обработчику прерывания не через конкретный адрес в памяти, а через регистры процессора.