Диспетчер будет в цикле перебирать нашу строку TaskList, выковыривать из
нее номера подпрограмм, по таблице, смещением, вычислять адреса
переходов на реальные процедуры, переходить по ним, делать полезное
действие, возвращаться обратно и брать новое значение из таблицы.
Чуете, куда я клоню? Получается своеобразная виртуальная машина.
Процессор в процессоре. Более того, сами задачи, вызываемые из очереди, не
обязательно должны быть тупо выполняющими конкретное действие. Они же
тоже могут набрасывать в эту самую очередь новых кодов, сортировать и на
ходу их переделывать. Получается мощный полиморфный алгоритм,
который может сам менять свою логику исходя из условий.
Позже, я на этом принципе покажу прообраз операционной системы. С
диспетчером задач и кучей потоков, вызывающих друг друга по цепочке.
А еще на индексных переходах можно делать очень компактные конечные
автоматы. Причем даже адрес не надо будет вычислять т.к. в виде текущего
состояния можно смело использовать прямые адреса других состояний
автомата.
Если не понял о чем идёт речь, то не забивай пока голову. Дальше будет на
это дело отдельная статья. Или помучай вопросами интернет на предмет
того, что такое конечные автоматы и как они реализуются.
AVR. Учебный Курс. Типовые конструкции
При написании программ постоянно приходится использовать разные
стандартные конструкции вроде циклов, операторов выбора, перехода,
сравнения. Всякие там if-then-else или case-switch. В высокоуровневых
языках это все уже готово, а на ассемблере приходится изобретать каждый
раз заново.