Оптимизация программы |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
Оптимизация программы |
Анна |
16.12.2008 17:47
Сообщение
#1
|
Бывалая Группа: Пользователи Сообщений: 290 Пол: Женский Реальное имя: Анютка Репутация: 7 |
Программа заменяет слово РАК на слово ЩУКА.
Что в ней можно изменить, чтобы выиграть во времени/объёму? .model small Сообщение отредактировано: Анна - 16.12.2008 22:17 |
volvo |
16.12.2008 18:02
Сообщение
#2
|
Гость |
Цитата Оптимизация программы Перед тем, как программу оптимизировать, надо вообще-то добиться ее правильной работы:Цитата(Console) F:\Asm30>anna по-моему не совсем то, что требовалось?щукаак, ракрак, щукаак Добавлено через 12 мин. Как минимум не хватает lea dx, replace_with |
Анна |
16.12.2008 22:18
Сообщение
#3
|
Бывалая Группа: Пользователи Сообщений: 290 Пол: Женский Реальное имя: Анютка Репутация: 7 |
Приношу извинения, поправила первый пост.
Цитата("исходная строка") рак, ракрак, рака Цитата("результат") щука, ракрак, рака |
volvo |
16.12.2008 23:47
Сообщение
#4
|
Гость |
Зачем тебе это - не понимаю, но вот если заменить вот это:
cmp al,'р'Оно тебе надо из-за 6-ти байт заморачиваться? |
Анна |
17.12.2008 0:21
Сообщение
#5
|
Бывалая Группа: Пользователи Сообщений: 290 Пол: Женский Реальное имя: Анютка Репутация: 7 |
Зачем оптимизация?
Задание такое в институте Не моя это заморочка. Это, как я поняла, оптимизация по объему и быстродействию? А что еще можно изменить, чтобы было только оптимизировано по объему (за счёт снижения быстродействия), либо только по быстродействию (за счёт увеличения объёма) ? |
volvo |
17.12.2008 1:24
Сообщение
#6
|
Гость |
Цитата А что еще можно изменить, чтобы было только оптимизировано по объему (за счёт снижения быстродействия) Замени; mov bx,ax- это уменьшит объем, но увеличит время выполнения (XCHG регистр/регистр занимает 1 байт, но выполняется за 3 такта, в то время как MOV регистр/регистр выполняется всего за 2 такта, но и занимает 2 байта). Кстати, ты бы сказала, процессор какой? |
Анна |
17.12.2008 17:30
Сообщение
#7
|
Бывалая Группа: Пользователи Сообщений: 290 Пол: Женский Реальное имя: Анютка Репутация: 7 |
Проц не обговаривается.
cmp word ptr [si], 0eae0hне заработала... Что не так? Сообщение отредактировано: Анна - 17.12.2008 17:31 |
volvo |
17.12.2008 17:46
Сообщение
#8
|
Гость |
Цитата Что не так? Что значит "не заработала"? Не компилируется? Не выводит результат? Что? Я перед тем, как запостить, наверное проверил, тебе не кажется, что я б не написал, если б не работало? |
volvo |
17.12.2008 18:17
Сообщение
#9
|
Гость |
P.S. Чтоб не утверждать что-то и не спорить просто так (возможно - проблема в том, что у меня Windows не русифицирован, поэтому я запускаю неЮникодные приложения через утилиту AppLocale, которая "заставляет" приложение думать, что оно запущено в русской локали, отсюда очень даже возможна проблема с кодировкой). Открой LST-файл, и сделай следующее:
1 0000 .model small В восьмой строке видишь коды E0 и EA? Посмотри, какие коды у тебя фигурируют точно на том же месте, и запиши их в обратном порядке в cmp word ptr [si], 0eae0h; у меня сначала идет E0 , потом EA, здесь пишем наоборот |
Анна |
17.12.2008 22:37
Сообщение
#10
|
Бывалая Группа: Пользователи Сообщений: 290 Пол: Женский Реальное имя: Анютка Репутация: 7 |
1 0000 .model small Заменила на cmp word ptr [si], 0AAA0h Всё заработало. Спасибо. Просто не сразу уловила, что есть 0eae0h ... Добавлено через 7 мин. Кстати, почему указывать нужно в обратном порядке? Сообщение отредактировано: Анна - 17.12.2008 22:39 |
volvo |
17.12.2008 22:54
Сообщение
#11
|
Гость |
Цитата Кстати, почему указывать нужно в обратном порядке? Потому что Интеловский порядок, Little-Endian. См. здесь, например: Wiki: Порядок байтов |
Текстовая версия | 23.09.2024 7:51 |