2013-04-20 1 views
-1

Я делаю большую программу с использованием модуля плавающей запятой в ASM, но я получаю неправильные цифры. Я сделал простой код, который также дает ложные числа. Кто-нибудь понял, почему? Что здесь не так? Я использую ubuntu 32b.ASM Модуль с плавающей точкой, дающий неправильные номера

SYSEXIT = 1 

.align 32 
.data 

a: .float 1 
b: .float 2 
test1: .float 0 

.text 
.global main 

main: 

finit 
fld a 
fld b 

loop: 
fmulp 
fstp test1 

mov $SYSEXIT, %eax 
int $0x80 

Я использую GDB, и после того, как «печатать» он показывает огромное количество, а не 1, а так же с другими 2-х переменных (б, test1).

Что здесь не так?

+0

Знает ли gdb, что вы просите его распечатать числа с плавающей запятой, а не целые числа? Я думаю, что это может и не знать. И 1.0 и 2.0 действительно огромные числа, если вы интерпретируете их 32 бита как 32 бита целого числа. –

ответ

0

Для того, чтобы интерпретировать и печатать числа как значения с плавающей запятой, а не целые числа, необходимо использовать print/f a.

Reference.

+0

спасибо, сэр! –