[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Например,на такой С:
#define Sda2 6
#define Sda1 5
#define bit(n) (1 << (n))bit FlagFirstTDA;
...
P6 |= bit(FlagFirstTDA ? Sda1 : Sda2);
...он выдаёт такой асм:
0056 300004 E JNB FlagFirstTDA,?C0070
0059 7E05 MOV R6,#05H
005B 8002 SJMP ?C0071
005D ?C0070:
005D 7E06 MOV R6,#06H
005F ?C0071:
005F 7401 MOV A,#01H
0061 C8 XCH A,R0
0062 EE MOV A,R6
0063 C8 XCH A,R0
0064 08 INC R0
0065 8002 SJMP ?C0092
0067 ?C0091:
0067 C3 CLR C
0068 33 RLC A
0069 ?C0092:
0069 D8FC DJNZ R0,?C0091
006B 4286 ORL P6,AНа фига делать какие-то сдвиги и вычислять маску,если Sda1 и Sda2 константы???Проверил значение бита FlagFirstTDA,взял нужную константу и маскируй.Не хочет...Вопрос - можно как-то ему помочь?
E-mail: info@telesys.ru