Im пытается использовать AVR Studio для добавления двух 32-битных чисел с плавающей запятой. Я знаю, что мне нужно будет хранить 32-битное число в 4 отдельных 8-битных регистрах. Затем мне нужно будет добавить регистры вместе с флагом переноса. Это то, что у меня есть до сих пор. Im добавляет 5.124323 и 2.2134523.Добавить два 32-битных числа с плавающей запятой с AVR-Assembler
;5.124323 (01000000101000111111101001110100)
;Store hex value (40A3FA74)
ldi r21,$40
ldi r22,$A3
ldi r23,$FA
ldi r24,$74
;2.2134523 (01000000000011011010100100110100)
;Store hex value (400DA934)
ldi r25,$40
ldi r26,$0D
ldi r27,$A9
ldi r28,$34
;Add the corresponding bytes together including the carry flag
add r21,r25
adc r22,r26
adc r23,r27
adc r24,r28
Это не кажется, чтобы дать мне правильный ответ ... Я уверен, что единственное, что неправильно здесь порядок регистров в последних 4-х строк кода. Или, может быть, функции add/adc также неверны. Может кто-то, пожалуйста, помогите мне с этим?
вы выполняете _integer_ дополнение. Это не даст правильный результат для значений с плавающей запятой (40A3FA74 + 400DA934 == 80B1A3A8, который при интерпретации 32-битного поплавка -1.6313592E-38). – Michael
Не добавляются инструкции 'add' и' adc' integer? –