Корифанос! Ай нид хелп! Помогите с математикой в 51 проце, упарился, второй день туплю. (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Анатоль 14 января 2005 г. 17:16

Нужно пасти следующую ситуацию:

signed int Data;
signed int NData;

Data+=NData;
if (Data<-32768) Data=-32768;
else if (Data>32767) Data=32767;

или
Data-=NData;
if (Data<-32768) Data=-32768;
else if (Data>32767) Data=32767;

В следствие скудности ресурсов вынужден работать с int, а не с long переменными и все это дело писать в виде асмовских вставок в Си на Кейле. Понятно, что сравнивать именно с числами бесполезно. Нужно пасти переполнения.

Собственно вопрос:
- как правильно пасти флаги CY и OV если числа со знаком и операции сложение и вычитание и нужно ли их пасти. Сейчас я пасу знак полученного результата и знаки операндов в купе с типом операции :-)))
- если можно пример проги на асм.
- согласен на трех-байтовую математику вместо 4-х байтовой(long), пробовал но пока результат плачевный - сказываются бессонные ночи :-(

Чего-то я очень сильно туплю, сроки поджимают, а выцепить где ошибся не могу.
Не дайте пропасть убогому....

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru