![]() |
|
|
![]()
|
|
| oshilan |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.3.2010 Репутация: нет Всего: 0 |
Помогите, пожалуйста, практически и наглядным образом разобраться в этом язые, написанием текста программы для решения такого примера: 8*2904+(9*2904)/92=результат разместить где-то в памяти. И желательно решить и 2-ой пример: 1993/(3*93)-6*93*403, чтоб я мог найти различия и понять что к чему. Зараннее благодарен!
|
|||
|
||||
| Mikl_ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
oshilan,
при написании программы на ассемблере объязательно следует указывать операционную систему под которую пишется задача (DOS, Linux, Win3.11, Win95/96, WinNT/2K/XP/Vista и т.д.) и компилятор (MASM, YASM, FASM и т.д.), а так же, то что ты сам сумел сделать... вспоминаем арифметику 8*2904+(9*2904)/92=726(32+9/23)
Это сообщение отредактировал(а) Mikl_ - 7.9.2010, 04:40 |
|||
|
||||
| oshilan |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.3.2010 Репутация: нет Всего: 0 |
Mikl_, спасибо! А за комментарии отдельная благодарность
|
|||
|
||||
| oshilan |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.3.2010 Репутация: нет Всего: 0 |
Решил решить 2-ой пример 1993/(3*93)-6*93*403 и masm32 выдал такие ошибки:
А вот мой текст программы:
Кто-нибудь знает в чём проблема? |
||||
|
|||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
компилятор не знает какого размера операнд - байт, слово или двойное слово. Соответственно он не понимает на что умножать - на al, ax или eax. Помещайте операнд в регистр. Или возможно прокатит так:
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| oshilan |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.3.2010 Репутация: нет Всего: 0 |
2 ksili: нет, не прокатывает. Те же ошибки :(
Добавлено через 9 минут и 12 секунд Новый код:
Скомпилировался без ошибок. Только нужно проверить правильность подсчётов Добавлено через 13 минут и 46 секунд Ответ должен быть с минусом, что-то я его в OllyDbg не нахожу. Может кто помочь, где его искать или правильным текстом программы? |
|||
|
||||
| Mikl_ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
oshilan,
для 16-разрядной DOS нужно писать .model small у вас все регистры 16-разрядные.model flat это для 32-разрядной Windows mul 3, mul 93 -- так не умножают, если умножение беззнаковое, тогда, в зависимости от размера, первое множимое должно быть в AL/AX/EAX, второе множимое помещают либо в регистр, либо в ячейку памяти, но это не может быть непосредственно число, произведение также зависит от размера множителей и будет помещено в AX/DX:AX/EDX:EAX. Если умножение со знаком, тогда можно использовать команду imul ax,3 или imul ax,93 -- вместо ax может быть любой другой регистр 1993/(3*93)-6*93*403
Это сообщение отредактировал(а) Mikl_ - 7.9.2010, 09:19 |
|||
|
||||
| oshilan |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 21.3.2010 Репутация: нет Всего: 0 |
Mikl_, огромное спасибо, всё работает! +1 бы, но не могу )
|
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |