там где есть %QX2.3, там же значит должен быть и %QB2, если этот байт именуете, например value, то к третьему разряду можно обращаться как value.3 Надеюсь это не вызывает вопросов, теперь
на одной находится на %QX2.3 у другой на %QX0.1
о каком цикле в этом случае может идти речь, если бы были одинаково %QX2.3 %QX0.3 тогда другое дело, ну или выкинуть Вашу идею и создать массив структуры, включающую в себя адрес байта, адрес бита и значение, первые два аргумента константные, а значение меняется в зависимости от ситуации. А дальше все просто, указатель на первый элемент, далее из соответствующего индекса массива смотрим какое смещение в адресе байта структуры, затем кейс из восьми элементов и в зависимости от адреса бита и присваиваем заданное значение