як повертати наліво?

C

creative_35

Guest
Привіт друзі,
Я новачок в CCS C
Confused близько обертового 16 бітне значення з перенесенням,
в той час, як я використовую "DATA = DATA <<1;" команди, це обертається але з нести,
і якщо я використовую "rotate_left (і DATA, 1);", це тільки перший обертається 8 біт з перенесенням,
що робити, щоб повернути 16 біт з перенесенням?
Будь ласка, допоможіть мені.

 
спробуйте наступне:
Код:

непідписаних rotateleft INT (непідписаних даних Int) (

сЬаг нести;

здійснювати = дані і 0x7FFF;

даних = дані <<1;

якщо (переносити) дані = 1;

повернення даних;

)
 
Дякуємо за Вашу відповідь budhy,16 біт (2X8bit) можна повертати з перенесенням тільки в зборі, лише дві команди.
ОСП data1, F
ОСП data2, F
Я думав, що повинні бути деякі супер простих методів в C
Тепер я зрозумів, C не гнучкий, як монтаж.

Вірно я кажу?

 
У програмі C ПОС, щоб мати хорошу поведінку кілька разів вам потрібно написати кілька rotines на асемблері, причиною ПОС Асемблер НЕ ІСІ, щоб бути отримана від програм C.
Але якщо ви хочете використовувати тільки програми C ви можете використовувати цей теж:

DATA = (DATA>> 15) | DATA <<1;

Я використовую MSP430, і його асемблер сумісний з C Asnsi і C теж, але ПІК не є причиною цієї лінії "DATA = (DATA>> 15) | DATA <<1;" буде генерувати велику програму АНМ, і ви можете зробили його за допомогою 2 АНМ instrunctions тільки.

У минулому я використав ПОС багато, і ПІК стала Suport 16-бітну змінну як і інші 8 розрядних мікроконтролерів (8051, наприклад).Я завжди використовувати 8 біт.Для axample, використовуйте
int8 data_l, datah
, А не
int16 даних

Ви будете написати кілька рядків у коді, але розмір двійкові програми буде скорочено ..

creative_35 пише:

Дякуємо за Вашу відповідь budhy,16 біт (2X8bit) можна повертати з перенесенням тільки в зборі, лише дві команди.

ОСП data1, F

ОСП data2, F

Я думав, що повинні бути деякі супер простих методів в C

Тепер я зрозумів, C не гнучкий, як монтаж.Вірно я кажу?
 

Welcome to EDABoard.com

Sponsor

Back
Top