Регистры общего назначения могут иметь несколько значений?
В один момент времени "условно только одна программа" работает.
При переключении контекста значения регистров нужно где-нибудь сохранить (например, в стеке), а при обратном переключении - загрузить обратно. Это происходит при вызове функций, входе в обработчики прерываний, переключении на другой процесс/поток и т.д.