Форум программистов, компьютерный форум, киберфорум
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056

Как перевести вещественное число в упакованное BCD число

29.09.2020, 14:51. Показов 1481. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
прив! как преобразовать элемент вектора XMM в упакованное BCD двоично-десятичное число..??
в указанном случае данные будут пониматься как простая последовательность байтов, как отдельные BCD-цифры..??

Assembler
1
2
3
4
5
6
7
8
9
.data
mas dd 1.12, 2.23, 3.34, 4.45
bcd db 4 dup(?)
 
.code
start:
movaps XMM0, mas
 
movss bcd, XMM0
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.09.2020, 14:51
Ответы с готовыми решениями:

Как перевести вещественное число в обычное
Есть ли какая-нибудь функция, которая переводит вещественное число (например, #C(-0.7851176 1.7533562)) в обычное. Добавлено через 28...

Перевести строку в вещественное число
Как перевести строку в тип double ? Для типа int делал так int nAge = Integer.parseInt(sAge); //преобразовываем строку в число. ...

Перевести вещественное число в мантиссу со степенью
Преподаватель привела пример, что при вводе 0.001 должно выводить 1e-3 и наоборот. Можно ли обойтись не очень длинной/сложной программой?...

13
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
29.09.2020, 19:07
Опустим пока XMM. Ты можешь без векторных регистров написать код того, что хочешь сделать? А то я не вкурил
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
29.09.2020, 19:45  [ТС]
Vourhey, суть в том, что требуется вещественное число перевести в упакованное двоично-десятичное BCD..

например, задана вещественная переменная var = 1.23 и выделена память для BCD..
Assembler
1
2
3
.data
var dd 1.23  (в дампе: 0xA4, 0x70, 0x9D, 0x3F)
bcd db 4 dup(?)
дополнительно точка в исходном числе заменяется на ноль в упакованном BCD..
наглядно в результате должно быть получено следующее..
Assembler
1
bcd db 0x00, 0x00, 0x10 , 0x23
Vourhey, так понятнее стало..??
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
29.09.2020, 22:50
proc3nt, стало понятнее. Но я ни разу не сталкивался с ассемблерными инструкциями, работающими с вещественными числами в BCD-формате.
0
E=m*c^2
 Аватар для K_ILYA_V
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5
02.10.2020, 00:26
правильно ли ты задаешь вопрос? читая тебя создаётся впечатление что ты хочешь превратить вещественный вектор в строку?
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
02.10.2020, 00:56  [ТС]
Цитата Сообщение от K-ILYA-V Посмотреть сообщение
читая тебя создаётся впечатление что ты хочешь превратить
просто руки не лежат на месте, вот решил немного пошаманить..
0
E=m*c^2
 Аватар для K_ILYA_V
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5
02.10.2020, 00:58
всегда ли числа будут содержать точку или ты хочешь извлечь только первые четыре символа?
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
02.10.2020, 01:28  [ТС]
Цитата Сообщение от K-ILYA-V Посмотреть сообщение
всегда ли числа будут содержать точку
ну, если число будет без точки, то оно уже не будет принадлежать социальной группе вещественных чисел..
а это противоречит условию задания..
Цитата Сообщение от K-ILYA-V Посмотреть сообщение
хочешь извлечь только первые четыре символа
на целую часть, дробную часть и точку в сумме максимум дается 8 знаков..
1
E=m*c^2
 Аватар для K_ILYA_V
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5
02.10.2020, 01:36
здесь нужно будет не меньше 30 строк и это без проверки на ошибки
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
02.10.2020, 01:43  [ТС]
Цитата Сообщение от K-ILYA-V Посмотреть сообщение
не меньше 30 строк
высказался бы я, да промолчу..
будет отлично, если здесь не будет больше 3000 строк..
0
E=m*c^2
 Аватар для K_ILYA_V
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5
02.10.2020, 01:47
тогда пари.

- две недели
- меньше 300 строк
- без проверки корректности входных данных
- AVX2
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
02.10.2020, 21:29  [ТС]
Цитата Сообщение от K-ILYA-V Посмотреть сообщение
тогда пари
азартные игры запрещены законодательством..

привыкай, на данном форуме больше простого общения, чем спортивных соревнований..
0
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
02.10.2020, 22:04
Цитата Сообщение от proc3nt Посмотреть сообщение
требуется вещественное число перевести в упакованное двоично-десятичное BCD
BCD по определению упакованная запись целого числа.

Можно занятся извратом и поделить число:
Цитата Сообщение от proc3nt Посмотреть сообщение
на целую часть, дробную часть
А оно того стоит?
0
E=m*c^2
 Аватар для K_ILYA_V
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5
03.10.2020, 09:55
Цитата Сообщение от proc3nt Посмотреть сообщение
азартные игры запрещены законодательством..
Тогда вот Вам частично (очень частично) функциональный код который частично делает первую основую часть работы, если у вас есть желание то его можно доделать.

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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
XMM_FLOAT       equ xmm0
XMM_BCD_1       equ xmm1
XMM_BCD_2       equ xmm2
XMM_TENTH_F     equ xmm3
XMM_ONE_F       equ xmm4
XMM_TEN_F       equ xmm5
XMM_TEN_I       equ xmm6
XMM_NULL        equ xmm7
XMM_UNTYPE_1    equ xmm8
XMM_UNTYPE_2    equ xmm9
XMM_INT32_1     equ xmm10
 
.data
vec01 real4 0.123, 1.234567, 1234.0, 123456.0
 
ten_float   real4 4 dup (10.0)
one_float   real4 4 dup (1.0)
tenth_float real4 4 dup (0.1)
 
ten_int     dd  4 dup (10)
 
mxc dd 0
 
.code
WinMain proc
    stmxcsr mxc
    or mxc,6000h
    ldmxcsr mxc 
    
    pxor XMM_NULL,XMM_NULL
    pxor XMM_BCD_1,XMM_BCD_1
    pxor XMM_BCD_2,XMM_BCD_2
    pxor XMM_INT32_1,XMM_INT32_1
    movdqa XMM_ONE_F, xmmword ptr one_float
    movdqa XMM_TEN_F, xmmword ptr ten_float
    movdqa XMM_TENTH_F, xmmword ptr tenth_float
    movdqa XMM_TEN_I, xmmword ptr ten_int
    movdqa XMM_FLOAT, xmmword ptr vec01
    
    rept 6
        call step01
    endm
    pxor XMM_UNTYPE_2,XMM_UNTYPE_2
    rept 3
        call step02
    endm
    movdqa XMM_BCD_2,XMM_BCD_1
    rept 4
        call step02
    endm
    
    pmovzxdq XMM_UNTYPE_1,XMM_BCD_1
    psrldq XMM_BCD_1,8
    pmovzxdq XMM_BCD_1,XMM_BCD_1
    
    pmovzxdq XMM_UNTYPE_2,XMM_BCD_2
    psrldq XMM_BCD_2,8
    pmovzxdq XMM_BCD_2,XMM_BCD_2
    pslldq XMM_BCD_2,4
    paddq XMM_BCD_1,XMM_BCD_2
    
    pslldq XMM_UNTYPE_2,4
    paddq XMM_UNTYPE_1,XMM_UNTYPE_2
    
    ; блок округления !?!
    
    step01 proc
        movdqa XMM_UNTYPE_1,XMM_ONE_F
        cmplepd XMM_UNTYPE_1,XMM_FLOAT
        movdqa XMM_UNTYPE_2,XMM_UNTYPE_1
        psubd XMM_INT32_1,XMM_UNTYPE_1      
        pand XMM_UNTYPE_1,XMM_TENTH_F
        pandn XMM_UNTYPE_2,XMM_ONE_F
        por XMM_UNTYPE_1,XMM_UNTYPE_2
        mulps XMM_FLOAT,XMM_UNTYPE_1
        ret
    step01 endp
 
    step02 proc
        mulps XMM_FLOAT,XMM_TEN_F
        movdqa XMM_UNTYPE_1,XMM_FLOAT
        cvtps2dq XMM_UNTYPE_1,XMM_UNTYPE_1
        psubd XMM_UNTYPE_1,XMM_UNTYPE_2
        paddd XMM_UNTYPE_2,XMM_UNTYPE_1
        pmulld XMM_UNTYPE_2,XMM_TEN_I
        pslld XMM_BCD_1,8
        paddb XMM_BCD_1,XMM_UNTYPE_1
        ret
    step02 endp
WinMain endp
end
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.10.2020, 09:55
Помогаю со студенческими работами здесь

Данно вещественное число X. Найти в нем первое число десятка, число десятых долей.
помогите плз решить Данно вещественное число X. Найти в нем первое число десятка, число десятых долей.

Перевести вещественное число из любой системы в десятичную
Перевести вещественное число из любой системы в десятичную? Сделал программу для перевода из десятичной в любую, а как на ее основе сделать...

Нужно перевести вещественное десятичное число в двоичное
помогите пожалуйста. Нужно перевести вещественное десятичное число в двоичное.

Вещественное число в 10-й системе счисления перевести в двоичный код
Вещественное число в 10-й системе счисления перевести в двоичный код(обратный и дополнительный)

Cчитать строку из ListBox как целое число и как вещественное число
какие команды позволяют считать строку из ListBox как целое число и как вещественное число Ещё одна тема с бессмысленным названием,...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru