ztoysop
|
|
1 | |
AVR умножение muls16x16_3229.08.2011, 02:31. Показов 4091. Ответов 3
Метки нет (Все метки)
Здравствуйте,
С беззнаковым умножением многобайтовых чисел все ясно. Попытался разобраться со знаковым и никак не могу понять откуда берутся sbc после последних двух произведений зачем они там и почему. Расскажите пожалуйста(= Код
muls16x16_32: clr r2 muls r23, r21 ; (sykned)ah * (sykned)bh movw r19:r18, r1:r0 mul r22, r20 ; al * bl movw r17:r16, r1:r0 mulsu r23, r20 ; (sykned)ah * bl sbc r19, r2 add r17, r0 adc r18, r1 adc r19, r2 mulsu r21, r22 ; (sykned)bh * al sbc r19, r2 add r17, r0 adc r18, r1 adc r19, r2 ret |
29.08.2011, 02:31 | |
Ответы с готовыми решениями:
3
AVR AVRISP STK500 V3.0 USB ISP Programmer for AVR IC AVR JTAG mkI + avarice + avr-gdb + Linux avr-etherboot -> Ethernet bootloader for AVR & enc28j60 (Avr Studio + WinAvr) vs (mikroC PRO for AVR) Как подкрутить AVR Toolchain к AVR Studio 4.19? |
ztoysop
|
|
30.08.2011, 14:36 | 2 |
Никто не знает?)=
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
|
01.09.2011, 10:41 | 3 |
Все знают, просто объяснять долго ))
Смотри, как представлены отрицательные числа? Очень просто, дополнительным кодом. Почему дополнительным? потому что дополняет до числа 256 (для восьмибитных). Например, возьмем 8 = 00001000b -8 => 256 - 8 = 11111000b Теперь обрати внимание, в наборе инструкций нет отдельно сложений знаковых и беззнаковых чисел, все происходит автоматом: 250 - 8 = 250 + (-8) = 11111010b + 11111000b = (1)11110010 = 256 + 242 получилось, как и ожидалось, 242 и единичка переноса (!) На самом-то деле это не перенос, это происходит из-за того, что мы представляем -8 как 256-8 Распишем еще разик: 250-8 => 250 + (256-8) = (256) + 240 Так вот, чтобы учесть этот виртуальный перенос, который возникнет при следующих сложениях, его превентивно и вычитают: Код
sbc r19, r2 => r19 = r19-r2-C = r19-0-C = r19-C
0
|
ztoysop
|
|
01.09.2011, 13:18 | 4 |
Спасибо большое!
Теперь понял. |
01.09.2011, 13:18 | |
01.09.2011, 13:18 | |
Помогаю со студенческими работами здесь
4
Анализ стека AVR / AVR stack analysis AVR Atmega324PU не прошивается AVR ISP Mk2 AVR Studio 6 и AVR Toolchain вопросы! STM8 после AVR с AVR-GCC Процедуры. Умножение матриц, векторов. Скалярное умножение. Надо найти ошибку Реализовать операции сложения, вычитания и умножение матриц, умножение на число Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |