Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1963Victor
0 / 0 / 0
Регистрация: 29.10.2014
Сообщений: 134
1

Как вывести дробное число. Delphi+Assembler

18.07.2015, 12:47. Просмотров 663. Ответов 1
Метки нет (Все метки)

Здравствуйте. Как вывести дробное число с фиксированной точкой в Delphi FloatToStr, если это слово в регистре eax, в старшем слове целая часть, в младшем дробная. Приведите пример пожалуйста. Как это делается в сопроцессоре и мантису с показателем степени знаю. Заранее благодарю.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2015, 12:47
Ответы с готовыми решениями:

Как вывести отрицательно число в Assembler
Assembler выводит отрицательные числа вообще?? или же нет ?

Вывести данные из матрицы (Delphi + Assembler)
Здравствуйте, из памяти не все данные выводятся в автомате правильно, если подставлять вручную...

Вывести младшее слово через переменную [Delphi + Assembler]
Здравствуйте. Не могу вывести младшие слово из аккумулятора в переменную.Заранее благодарю....

Не отрабатывает дробное число в сопроцессоре. Delphi+Assembler
Здравствуйте. Косвенная адресация с целыми числами получается, не получается с дробными. Заранее...

Как вывести дробное число
Я хочу вывести 2 или 3 знака после запятой. ЧТО МНЕ НАДО написатаь. Подскажите, пожалуйста. т. е....

1
alexcoder
2012 / 721 / 150
Регистрация: 03.06.2009
Сообщений: 4,505
Завершенные тесты: 1
19.07.2015, 10:19 2
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
.586
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
include masm32.inc
includelib user32.lib
includelib masm32.lib
includelib kernel32.lib
 
.data
buf db 32 dup (0)
.code
_start:
    mov eax,-123*65536+8000h    ;123.5
    lea edi,buf
    push eax
    sar eax,16
    mov esi,eax ;запоминаем число
    mov ebx,10  ;основание системы
    xor ecx,ecx ;в сх будет количество цифр в десятичном числе
    test eax,eax    ;если число положительное
    jns @@m1a   ;то пропускаем
    neg eax     ;если отрицательное, то меняем знак
@@m1a:  xor edx,edx
    div ebx     ;делим число на степени 10
    push edx        ;и сохраняем остаток от деления(коэффициенты при степенях) в стек
    inc ecx     ;увеличиваем количество десятичных цифр числа
    test eax,eax    ;после деления остался 0?
    jnz @@m1a   ;если нет, продолжаем
    test esi,esi    ;число отрицательное?
    jns @@m2a   ;если нет, пропустить
    push -3     ;иначе дописать перех числом минус
    inc ecx     ;увеличить количество цифр числа
@@m2a:  pop eax     ;взять из стека цифру цисла
    add al,'0'  ;преобразовываем цифру в ASCII символ
    stosb       ;записываем в строку
    loop @@m2a  ;все цифры
    mov al,'.'
    stosb       ;выводим точку
    pop eax
    and eax,0ffffh;берем дробную часть
;ДЛЯ ИЗМЕНИЯ КОЛ_ВА ЗНАКОВ ПОСЛЕ ЗАТОЙ ИЗМЕНЯТЬ ЗДЕСЬ 
    mov ecx,10000
    mul ecx     ;умножаем на 10000, чтобы было 4 знака после запятой
    mov ecx,65536
    div ecx     ;делим на 65536
;вывод дробной части
    mov ebx,10  ;основание системы
    xor ecx,ecx ;в сх будет количество цифр в десятичном числе
@m1a:   xor edx,edx ;очистить старшую часть делимого
    div ebx     ;делим число на степени 10
    push edx        ;и сохраняем остаток от деления(коэффициенты при степенях) в стек
    inc ecx     ;увеличиваем количество десятичных цифр числа
    test eax,eax    ;после деления остался 0?
    jnz @m1a    ;если нет, продолжаем
;И ЗДЕСЬ!!!!
    cmp ecx,4
    jb @m1a     ;не менее 4 знаков запихиваем в стек
@m2a:   pop eax     ;взять из стека цифру цисла
    add al,'0'  ;преобразовываем цифру в ASCII символ
    stosb
    loop @m2a   ;все цифры
    mov al,0
    stosb
    invoke ExitProcess,0    ;выход
end _start
end
Преобразование в ASCIIZ-строку. Для делфи допиливать самостоятельно!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2015, 10:19

Как правильно вывести дробное число
Драсте! Формат вывода числа написал правильно (тип float значит нужно писать %f), а оно постоянно...

Вывести сумму элементов матрицы как дробное число
Помпогите! Ответ выводиться целым а нужно десятичным! case 3: for( int...

Как вывести дробное число в обычном виде с фиксированной запятой?
Как вывести дробное число в обычном виде с фиксированной запятой?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru