Что это: ошибка компилятора или мое непонимание... Хочу поменять местами биты, и вот что выходит.
BYTE bdata bVar; // глобальная переменная для побитового доступа
sbit bVar7 = bVar^7;
sbit bVar6 = bVar^6;
sbit bVar5 = bVar^5;
sbit bVar4 = bVar^4;
sbit bVar3 = bVar^3;
sbit bVar2 = bVar^2;
sbit bVar1 = bVar^1;
sbit bVar0 = bVar^0;
// далее в подпрограмме
// ...
bVar = OUT4BUF[1] << 1;
bVar0 = bVar1; bVar1 = bVar3; bVar3 = bVar0;
KY = bVar;
Результат компиляции в C51 V7.50
;ОК
MOV DPTR,#OUT4BUF+01H
MOVX A,@DPTR
ADD A,ACC
MOV bVar,A
;ОК
MOV C,bVar1
MOV bVar0,C
MOV C,bVar3
MOV bVar1,C
MOV C,bVar0
MOV bVar3,C
;далее не понимаю
MOV DPTR,#KY
MOVX @DPTR,A