|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.06.2012, 16:26 | #1 |
Пользователь
Регистрация: 20.11.2011
Сообщений: 28
|
переделать код на ассемблер
Помогите пож. не дуамю что это так сложно для знающего человека, просто я ассемблер даже чуть чуть не знаю
o=s2/3*r; только эту строчку, она написана на с++ и мне нужна ассемблеровская вставка этого кода очень прошу срочно |
07.06.2012, 16:44 | #2 |
Пользователь
Регистрация: 20.11.2011
Сообщений: 28
|
вот что написал я
__asm { mov ebx,s2;/конфликт размеров операндов mov ecx,3; div ecx; mov eax,r;//конфликт размеров операндов mul ecx; } |
07.06.2012, 18:17 | #3 |
Пользователь
Регистрация: 11.12.2010
Сообщений: 50
|
Регистры eax, ebx и т. д. 32х разрядные. Т.е. в случае беззнакового типа (unsigned в C/C++) максимальное число = 4292967296 (тип unsigned long). Если используется знаковый тип, то максимальное число сокращается: 2147483648 (тип signed long). Также, если это число с плавающей запятой, то простой командой mov его в регистр не занести (хотя здесь могу ошибаться).
Теперь по коду. Команды div и mul неявно используют регистр eax. А так как Вы занесли делимое в регистр ebx, то его Вы точно не разделите. Также эти команды выполняют целочисленное деление и умножение, в противном случае требуется использовать idiv и imul. Направление я дал, дальше сами. |
08.06.2012, 16:52 | #4 | ||
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Цитата:
Цитата:
Правильно поставленная задача - три четверти решения.
|
||
09.06.2012, 13:11 | #5 | |
Пользователь
Регистрация: 11.12.2010
Сообщений: 50
|
Цитата:
Да, заклинило меня. Именно это я и имел ввиду. |
|
18.07.2014, 12:09 | #6 |
Пользователь
Регистрация: 25.11.2006
Сообщений: 40
|
|
18.07.2014, 12:25 | #7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
типы какие для начала.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Переделать в код Delphi!! | Настена290 | Помощь студентам | 2 | 01.02.2012 15:52 |
нужна переделать код СИ | daimonTM | Помощь студентам | 0 | 31.05.2011 23:14 |
Как переделать код? | P®o©omp@s | Помощь студентам | 2 | 26.10.2009 19:21 |
Переделать код | Hepri | Работа с сетью в Delphi | 3 | 20.08.2009 20:28 |
Помогите переделать код | stayer | Общие вопросы Delphi | 3 | 25.10.2008 21:09 |