biso
@biso

При попытке сложить 14 и 3.08 в место корректного ответа выдает буквы и заменяет некоторые символы. Как фиксить?

p.s. Если задать число и ответ будет меньше 10, то ответ дает нормально5ee21ea124e7c342096140.png5ee21eac34a3b503175284.png

Сам код:
section .text
global _start

_start: 
    mov eax,'14'
    sub eax, '0'

    mov ebx, '3.08'
    sub ebx, '0'
    add eax, ebx
    add eax, '0'
    
    mov [sum], eax
    mov ecx,0
    mov edx,1
    mov ebx,1 
    mov eax,4 
    int 0x80 

    mov ecx,sum
    mov edx, 6
    mov ebx,1 
    mov eax,4 
    int 0x80 

    mov eax,1 
    int 0x80 

section .data
segment .bss
sum resb 1
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
@galaxy
Что это за кошмар, вообще? Кто вас научил так строку в число конвертировать:
mov eax,'14'
sub eax, '0'

?
Да, оно сработает для одиночных цифр, для дву- и более значных будет полная ерунда (тут примерно написано почему).

Ну а float'ы складывать так же - это надо додуматься... Вы же знаете про существование FPU?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы