2 / 2 / 2
Регистрация: 01.12.2012
Сообщений: 123
|
|
1 | |
Вставка asm в С++06.03.2015, 21:01. Показов 13311. Ответов 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 Asm вставка в С++ возвести число в степень |
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,669
|
|
06.03.2015, 21:05 | 2 |
Нет там ограничения на 16-разрядные регистры.
0
|
Ушел с форума
|
|
06.03.2015, 21:05 | 3 |
ax, bx и другие регистры в 32-битных системах никуда не делись,
они доступны, как и раньше. Также, как и их собственные восьмибитные половинки - al, bl и т.д. Нет никакой связи между версией Windows и тем, какие регистры процессора доступны. (16-битные Windows не в счет, ибо архаизм).
0
|
2 / 2 / 2
Регистрация: 01.12.2012
Сообщений: 123
|
||||||
06.03.2015, 21:40 [ТС] | 5 | |||||
Можете привести простейший пример использования 16 разрядных регистров... у меня не получается использовать такие команды как mov ax,5 Получается только mov eax,5 Насколько я понимаю это подходит по заданию?
Получается только так:
0
|
2 / 2 / 2
Регистрация: 01.12.2012
Сообщений: 123
|
||||||
06.03.2015, 21:59 [ТС] | 8 | |||||
0
|
2 / 2 / 2
Регистрация: 01.12.2012
Сообщений: 123
|
||||||
06.03.2015, 23:17 [ТС] | 10 | |||||
Понятно.Спасибо за объяснение.
у меня не получается деление,подскажите почему?
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|||||||||||
07.03.2015, 05:52 | 11 | ||||||||||
не получается что?
для начала ты работаешь со знаковыми параметрами или беззнаковыми если со знаковыми то
а если беззнаковые то
для знаковых арифметический, для беззнаковых логический еще твой листинг как то не отображает сию формулу
1
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
07.03.2015, 07:09 | 12 |
Решить задачу на C++, открыть в дизассемблере (сеть подсказывает что для Microsoft Visual C++ - ALT-F3 в режиме отладки), выписать решение, подправить под свои нужды и сдать.
Да, да, знаю что не спортивно. Но у меня такое ощущение что ваш препод подразумевал 16-битовый реальный режим с 20-битовой сегментной адресацией, который все давно похоронили и чечетку на могиле сплясали.
0
|
2 / 2 / 2
Регистрация: 01.12.2012
Сообщений: 123
|
||||||
07.03.2015, 13:20 [ТС] | 13 | |||||
ValeryS,
Получается если заносить делитель в bl,в bx не получается,выдает ошибку Я буду использовать числа чтобы деление было нацело. Вот чуточку переделал. После пробовал такую команду mov bx,b Почему она не заносит переменную b? Там помещает неизвестное число.
Renji, Можно поконкретней как открыть в дизассемблере? у меня студия 2013 стоит,найти не смог...
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
07.03.2015, 13:28 | 14 |
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
07.03.2015, 14:46 | 15 |
ссылку почитал?
судя вот по этому тебе современные компиляторы не подойдут например размер делимого в два раза больше частного чтобы получить частное 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 [ТС] | 16 |
Я скажу больше он сам даже задания не читал,я больше чем уверен
Добавлено через 53 минуты ValeryS, Да я прочел статью,сделал как надо вроде все хорошо,но не показывает код.... Единственное что пишет: Дизассемблированный текст нельзя просматривать в режиме выполнения.
0
|
Ушел с форума
|
|
07.03.2015, 16:46 | 17 |
Можно.
Поищи во время отладки в меню Debug строку "Disassembly". Ну и WinDBG / Olly никто не отменял.
0
|
07.03.2015, 16:46 | |
07.03.2015, 16:46 | |
Помогаю со студенческими работами здесь
17
Asm вставка и возвращаемое системе значение Вставка asm, адрес члена локального объекта c++ и ASM c++ asm Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |