Форум программистов, компьютерный форум, киберфорум
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 27.07.2016
Сообщений: 10

Умножение целого числа на вещественное

03.12.2019, 23:20. Показов 4137. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вразумите пожалуйста. Написать на Ассемблере z=x*y, с повторным выводом на консоль проверки. x - целое,не вещественное, не отрицательное, не должно быть букв(например юзер вводит вещественное число, в консоли выходит ошибка и надо ввести снова число). y - может быть целое, вещественное, положительное и отрицательное и не должно быть букв. Что то пытался сделать, но все не так как надо.
C++
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
setlocale(LC_ALL, "Russian");
    float a;
    cout << "Введеное число должно быть целым, не вещественным x = ";
    cin >> a;
    if (a == int(a))  
    {
        cout << "Веденое число целое, продолжить" << endl;
    }
    else
    {
        cout << "Введеное число дробное, Ошибка!\n";
        return(0);
    }
    while (true)       //цикл, повторяющий одно и то же действие, пока условие продолжения цикла остаётся истинным
    {
        if (cin.good())    //Ф-ция good() возвращает bool. Если ввод или вывод произошли без ошибок, возвращает true. 
        {
            cin.ignore(10, '\n');  //читает символы из входного потока до '\n',в a попадут только цифры
            break;
        }
        cin.clear();              //ф-ция очищает флаг ошибки, если возникает ошибка при вводе данных из cin
        cout << "Ошибка.Обнаружены буквы";
    
        return 0;
    }
    cin >> a;
    float y;
    cout << "Введите второе число: ";
    cin >> y;
    float z;
    _asm               //кодовая вставка на Assembler 
    {
        xor EAX, EAX   //обнуляем регистр EAX
        xor EBX, EBX   //обнуляем регистр EBX
 
        mov EAX, a     //EAX = a
        mov EBX, y     //EBX = y
        imul EAX, EBX  //EAX = EAX*EBX = a*y
        mov z, EAX     //Записываем результат в z
    }
    cout << "z = " << z << endl;   //Выводим результат на экран
    system("pause");               // Команда задержки экрана
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.12.2019, 23:20
Ответы с готовыми решениями:

[NASM] Умножение длинного целого числа в памяти на регистр
умножение длинного целого числа (в памяти) на регистр. Получить произведение*(в памяти) может кто-нибудь помочь? среда nasm

Умножение и деление целого числа
1. Напишите программу, в которой умножение и деление целого числа на {2}^{n} реализуется при помощи логических сдвигов.

Умножение целого числа на дробь
Здравствуйте форумчане,вот здесь описывается процесс для верного разумения умножения целого числа на дробь...

12
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
04.12.2019, 00:07
Цитата Сообщение от nikolaysan Посмотреть сообщение
y - может быть целое, вещественное, положительное и отрицательное
imul работает только с целыми. Тебе нужно умножать два вещественных числа. Используй сопроцессор, или sse, и дальше по списку.
0
0 / 0 / 0
Регистрация: 27.07.2016
Сообщений: 10
04.12.2019, 18:35  [ТС]
если fmul поставить то ошибку выдает недопустимый тип операнда
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
04.12.2019, 18:38
RU
Vourhey, запах какого одеколона тебя привел в раздел низкоуровневого..

Цитата Сообщение от Vourhey Посмотреть сообщение
Тебе нужно умножать два вещественных числа
хочешь сказать, что целое x нужно будет преобразовать к вещественному виду..
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
04.12.2019, 19:04
Цитата Сообщение от proc3nt Посмотреть сообщение
Vourhey, запах какого одеколона тебя привел в раздел низкоуровневого..
Я особо и не уходил отсюда
Цитата Сообщение от proc3nt Посмотреть сообщение
хочешь сказать, что целое x нужно будет преобразовать к вещественному виду..
"нужно" это не то слово. Я бы сделал именно так: считал два вещественных числа и перемножил. Но никто не мешает использовать fimul вместо imul (в представленном автором коде работать не будет, надо поменять). Изменить код руками, или сопроцессору доверить - пусть программист выбирает сам.

Добавлено через 10 минут
В общем, я бы написал:
Assembler
1
2
3
movss xmm0, a
mulss xmm0, b
movss c, xmm0
и не стал бы больше ничего делать для этой задачи.
1
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
04.12.2019, 19:09
Цитата Сообщение от Vourhey Посмотреть сообщение
Я особо и не уходил отсюда
тогда меня данный факт радует, что есть такие постояльцы..
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
04.12.2019, 19:10

Не по теме:

Цитата Сообщение от proc3nt Посмотреть сообщение
тогда меня данный факт радует, что есть такие постояльцы..


1
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
04.12.2019, 19:11
Цитата Сообщение от Vourhey Посмотреть сообщение
В общем, я бы написал
думаю, что сильно сложная реализация с использованием регистров xmm..
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
04.12.2019, 19:29
Цитата Сообщение от proc3nt Посмотреть сообщение
думаю, что сильно сложная реализация с использованием регистров xmm..
Вроде она прям проще некуда. Не нужно всех этих извращений с ST: положи туда, загрузи оттуда, бла-бла-бла. Проще же, не?

Добавлено через 5 минут
Ну ок, пусть тоже будет здесь:
Assembler
1
2
3
fld b
fimul a
fst c
где b и c - вещественные. Но sse вариант мне нравится больше. Для меня он просто читабельнее

Добавлено через 4 минуты

Не по теме:

Хотя, наверное, это уже деформация. Каждодневно видеть AVX-инструкции. FPU не воспринимается больше.

2
0 / 0 / 0
Регистрация: 27.07.2016
Сообщений: 10
04.12.2019, 19:36  [ТС]
с этими регистрами (eax, ebx) значить не получится, что бы x всегда было целое число, обязательно переводить в вещественное?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
04.12.2019, 19:39
Цитата Сообщение от nikolaysan Посмотреть сообщение
с этими регистрами (eax, ebx) значить не получится
Зачем они нужны, если можно без них? Просто чтобы были? Что за извращения? Давай еще какой-нибудь регистр заиспользуем просто так, что другие не чувствовали себя одинокими.
Цитата Сообщение от nikolaysan Посмотреть сообщение
что бы x всегда было целое число
Ну, пусть будет. В моем последнем примере a - целое.
Цитата Сообщение от nikolaysan Посмотреть сообщение
обязательно переводить в вещественное
Нет. Я уже написал два варианта. Один с двумя вещественными, один с целым и "нецелым". Бери любой, меняй имена переменных на свои и радуйся жизни.
1
0 / 0 / 0
Регистрация: 27.07.2016
Сообщений: 10
04.12.2019, 19:48  [ТС]
спасибо
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
04.12.2019, 20:08
Vourhey, годно.. принято..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.12.2019, 20:08
Помогаю со студенческими работами здесь

Как произвести умножение только целого числа
Есть число 45.12 Как произвести умножение только целого числа? т.е например 45 * 2

Умножение целого числа на число с плавающей запятой
Здравствуйте. Интересует такой вопрос, как можно умножить целое число на число с плавающей запятой и после получить целое число с...

Машина Тьюринга: умножение целого неотрицательного числа на 5
Добрый день! Столкнулся с проблемой алгоритмизации решения задачи на Машине Тьюринга. Необходимо умножить число записанное в унарной...

Написать функцию возведения в квадрат целого числа не использующую умножение
Можете пожалуйста объяснить по строкам, что делает каждая из них Задача была вот такой: Реализуйте функцию square(), не используя...

Необходимо реализовать на машине Тьюринга умножение на 9 целого троичного числа.
помогите решить задание в машине Тьюринга Необходимо реализовать умножение на 9 целого троичного числа Добавлено через 21 час 15...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru