ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
19497
Анатоль (14.01.2005 16:26, просмотров: 914)
Корифанос! Ай нид хелп! Помогите с математикой в 51 проце, упарился, второй день туплю. Нужно пасти следующую ситуацию: 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), пробовал но пока результат плачевный - сказываются бессонные ночи :-( Чего-то я очень сильно туплю, сроки поджимают, а выцепить где ошибся не могу. Не дайте пропасть убогому....