Size: a a a

Ассемблер

2021 June 29

D

Den in Ассемблер
Оп! Aiwan Спасибо а то я гадал в каком формате данные, правда мне надо будет грузить в float dd ? и ввод будет посимвольный в ascii
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
все правильно ты там выше сказал. число хранится в формате IEEE (знак порядок мантисса). просто это все делает сам асм. но ты всегда можешь написать этот как hex значение
источник

D

Den in Ассемблер
а как же записать float в виде hex значения, имея ввиду пользовательский ввод так возможно?
источник

АШ

Алексей Шведов... in Ассемблер
Считать текстом до точки, и после точки. Передать аргумент: 1 число, 2 число, float/не float, и вот так складывать, а потом вывод - если float, то сначала вывести 1 число, потом точку, и 2 число
источник

D

Den in Ассемблер
ну этот вариант примерно понятен а мы тут с fpu вариант еще обсуждаем
источник

D

Den in Ассемблер
Просто я думал что если при делении в edx пишется остаток, то есть какая то схема типа пишем целое в eax перцишен пишем в edx и fpu это кушает как float, но похоже это мои фантазии были
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
что такое перцишен?
источник

D

Den in Ассемблер
Просто как Aiwan описал это все ложиться на препроцессор и он генерит в коде мантиссу и порядок а при пользовательском вводе это надо будет вручную мутить если не хитрить с флоатом как с целым
источник

D

Den in Ассемблер
ну точность типа я не помню как там после точки эта история называется :)
источник

D

Den in Ассемблер
precision прецижн значит 😁
источник

A

Aleksandr in Ассемблер
Пресижн
источник

D

Den in Ассемблер
тут еще и английский подтянешь и тетечки ненадо
источник

D

Den in Ассемблер
Вот нашел еще  интересный вариант как сгенерить bcd float который fpu должен понять:
15.101 -> 15101 -- Remove the decimal point
15101 -> 0001 0101 0001 0000 0001 -- Converted to BCD
Now we just add an extra 4 bits at the end to determine decimal place:
0001 0101 0001 0000 0001 -> 0001 0101 0001 0000 0001 0011
0011 is 3. That's because the decimal point goes 3 places to the left.
т.е дополнительно создаем справа пакет 4 бита и там задаем нужное положение точки. Только непонятно как это форматировать в dworde по правой границе или по левой, и не очень то большое число вместится
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
что ты хочешь сделать?
источник

АШ

Алексей Шведов... in Ассемблер
Он пытается реализовать поддержку float в своём калькуляторе
источник

D

Den in Ассемблер
ну мне попадает в переменную набор ascii байтов из цифр и точки
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
и?
источник

АШ

Алексей Шведов... in Ассемблер
Он хочет перевести их в удобный формат, чтобы провести с ними арифметические операции. Два регистра в виде 1-го числа до точки, и 2-го после точки - ему неудобно. Вот он и ищет другой способ
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
а чем atof не устраивает?
источник

D

Den in Ассемблер
этот суповой набор надо запихать в сопроцессор :)
источник