|
2 / 2 / 2
Регистрация: 01.12.2012
Сообщений: 123
|
|
Вставка asm в С++06.03.2015, 21:01. Показов 14018. Ответов 16
Метки нет (Все метки)
Здравствуйте! Помогите пожалуйста!
Задание: Вычислить арифметическое выражение. Требуется написать функцию на языке C++ с вставкой на языке ассемблера. Ввод и вывод данных производить средствами библиотеки классов систем Borland C++ Builder либо Microsoft Visual C++. Для вычислений использовать только 16-разрядные регистры. Если значения входных параметров приводят к ошибке вычисления выражения (например, деление на нуль), программа должна выводить предупреждающее сообщение. Вопрос в том что "Для вычислений использовать только 16-разрядные регистры." Это получается используя регистры ax,bx.... Возможно ли это использовать на Visual Studio под Windows 8.1 х64. Насколько я понимаю возможность только использовать регистры старших разрядов eax,ebx.... И появится ли такая возможность если использовать Windows ХР?
0
|
|
| 06.03.2015, 21:01 | |
|
Ответы с готовыми решениями:
16
asm вставка в C++ asm вставка в C++ asm вставка в C++ часть 2 |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 06.03.2015, 21:05 | |
|
Нет там ограничения на 16-разрядные регистры.
0
|
|
|
Ушел с форума
|
|||
| 06.03.2015, 21:05 | |||
|
они доступны, как и раньше. Также, как и их собственные восьмибитные половинки - al, bl и т.д. (16-битные Windows не в счет, ибо архаизм).
0
|
|||
|
2 / 2 / 2
Регистрация: 01.12.2012
Сообщений: 123
|
||||||
| 06.03.2015, 21:40 [ТС] | ||||||
|
Можете привести простейший пример использования 16 разрядных регистров... у меня не получается использовать такие команды как mov ax,5 Получается только mov eax,5 Насколько я понимаю это подходит по заданию?
Получается только так:
0
|
||||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
||||||||
| 06.03.2015, 21:50 | ||||||||
0
|
||||||||
|
2 / 2 / 2
Регистрация: 01.12.2012
Сообщений: 123
|
||||||
| 06.03.2015, 21:59 [ТС] | ||||||
0
|
||||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
||
| 06.03.2015, 22:25 | ||
|
во вторых все операции с плавающими через сопроцессор
0
|
||
|
2 / 2 / 2
Регистрация: 01.12.2012
Сообщений: 123
|
||||||
| 06.03.2015, 23:17 [ТС] | ||||||
|
Понятно.Спасибо за объяснение.
у меня не получается деление,подскажите почему?
0
|
||||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
||||||||||||||
| 07.03.2015, 05:52 | ||||||||||||||
|
для начала ты работаешь со знаковыми параметрами или беззнаковыми если со знаковыми то
а если беззнаковые то
для знаковых арифметический, для беззнаковых логический еще твой листинг как то не отображает сию формулу
1
|
||||||||||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 07.03.2015, 07:09 | ||
|
Да, да, знаю что не спортивно. Но у меня такое ощущение что ваш препод подразумевал 16-битовый реальный режим с 20-битовой сегментной адресацией, который все давно похоронили и чечетку на могиле сплясали.
0
|
||
|
2 / 2 / 2
Регистрация: 01.12.2012
Сообщений: 123
|
||||||
| 07.03.2015, 13:20 [ТС] | ||||||
|
ValeryS,
Получается если заносить делитель в bl,в bx не получается,выдает ошибку Я буду использовать числа чтобы деление было нацело. Вот чуточку переделал. После пробовал такую команду mov bx,b Почему она не заносит переменную b? Там помещает неизвестное число.
Renji, Можно поконкретней как открыть в дизассемблере? у меня студия 2013 стоит,найти не смог...
0
|
||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
| 07.03.2015, 13:28 | |
|
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
|||
| 07.03.2015, 14:46 | |||
|
судя вот по этому например размер делимого в два раза больше частного чтобы получить частное 16 бит делимое должно быть 32 бита для современных компиляторов это eax но тебе нужна пара dx:ax посему поищи на просторах сети BC 3.1 в связке с DosBox он как раз поддерживает 16 битный режим, и там насколько помню были библиотеки для работы с double float минуя сопроцессор видать препод ваш уснул в году так 1995
0
|
|||
|
2 / 2 / 2
Регистрация: 01.12.2012
Сообщений: 123
|
|
| 07.03.2015, 16:35 [ТС] | |
|
Я скажу больше он сам даже задания не читал,я больше чем уверен
Добавлено через 53 минуты ValeryS, Да я прочел статью,сделал как надо вроде все хорошо,но не показывает код.... Единственное что пишет: Дизассемблированный текст нельзя просматривать в режиме выполнения.
0
|
|
|
Ушел с форума
|
||
| 07.03.2015, 16:46 | ||
|
Поищи во время отладки в меню Debug строку "Disassembly". Ну и WinDBG / Olly никто не отменял.
0
|
||
| 07.03.2015, 16:46 | |
|
Помогаю со студенческими работами здесь
17
Asm вставка и возвращаемое системе значение Вставка asm, адрес члена локального объекта c++ и ASM c++ asm Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|