Здравствуйте! что-то я туплю совсем. Есть например регистр D1113 для состояний аналоговых входов на EX2? так там в один регистр по 3 последовательных бита уложены состояния всех 4 входов. вот теперь не могу понять, как мне из одного регистра вынуть данные в 4 других для раздельного анализа. то есть в один регистр мне надо скопировать первые 3 бита из D1113, в следующий 4,5,6 биты.. ну и т.д. но скопировать надо именно в первые биты новых регистров. то есть для второго регистра мне надо из D1113 скопировать 4,5,6 биты в 1,2,3 нового.
сначала думал распаковать регистр в М, а потом уже частями забирать, но слишком много геморроя, поскольку команда K1Mx работает только на 4 последовательных бита а потому надо распаковать, помто еще куда-то скопировать , чтобы ноль в конце был а потом еще и собрать обратно... ну мне кажется есть более красивое решение данной задачи.
думал Smov, но опять только по 4 бита строго блоками...
блин. я идиот. там же по 4 бита!!! все норм. тогда разложить а потом кусочками собрать.
но все равно хотелось бы услышать предложения по решению таких задач.
Скопировать 3 последовательных бита из регистра в регистр
Re: Скопировать 3 последовательных бита из регистра в регистр
Если порядок соблюдается, то можно вот так:
регистр2:=регистр1 AND 2#1111 0000 0000 0000;
Если не соблюдается, то дополнительно или вместе использовать SHL, SHR (побитовый сдвиг влево/вправо)
Выполнять в синтаксисе ISPSoft.
регистр2:=регистр1 AND 2#1111 0000 0000 0000;
Если не соблюдается, то дополнительно или вместе использовать SHL, SHR (побитовый сдвиг влево/вправо)
Выполнять в синтаксисе ISPSoft.
Re: Скопировать 3 последовательных бита из регистра в регистр
Кто вам запрещает сделать SMOV несколько раз, проверяя биты в исходном регистре через LD& ))
Последний раз редактировалось tvent 12 янв 2022, 14:20, всего редактировалось 1 раз.