![]() |
|
|
![]()
|
|
| froggy82 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 25.9.2006 Где: Архангельск Репутация: нет Всего: нет |
Итак известно:
тип массива Word; признак окончания 255 (Это последний элемент массива, если в цикле встретилось данное число, выходим из цикла, так как элементы массива закончились. Если число не указано, то нулевой элемент массива – это его длина (количество элементов массива - 1), и элементы массива начинаются с первого элемента. В любом случае эти крайние элементы (нулевой или последний) не должны участвовать в вычислениях при выполнении задания; Задание: Если элемент массива равен 3, заменить его на 33. Результат поместить в тот же массив.... Я не спорю, что это некрасиво просить решить простенькую задачку, но я действительно не понимаю с чего начать и как закончить |
|||
|
||||
| nobodyzzz |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 1.9.2006 Где: Минск Репутация: нет Всего: нет |
//нашел баг =) исправляю
Это сообщение отредактировал(а) nobodyzzz - 4.10.2006, 13:17 |
|||
|
||||
| froggy82 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 25.9.2006 Где: Архангельск Репутация: нет Всего: нет |
nobodyzzz,
как я понял si и di это переменные? sergejzr, прошу прощения, этого не повторится |
|||
|
||||
| Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: нет Всего: 29 |
||||
|
||||
| froggy82 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 25.9.2006 Где: Архангельск Репутация: нет Всего: нет |
В каждом регистре общего назначения выделяют младшую часть, как самостоятельный регистр (их тоже 8 – AX, BX, CX, DX, BP, SP, SI и DI). Соответстввенно можно ли использовать любой из этих восьми? |
|||
|
||||
| Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: нет Всего: 29 |
Только SP - стековый указатель. Его лучше не трогать. Добавлено @ 09:13 Без необходимости |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
общего назначения - ax, cx, dx, bx. они делятся на половинки. остальные - нет.
есть предположение, что кто-то допустил "ляп" в условии. лучше уточнить у того, кто давал задание, не -1 ли имелась ввиду(в случае элементов word - это 65535(ffff)). опять мухо. если считать, что условие задачи верно, то тут не учитывается старшая половина слова, а если ориентироваться на "правильную" -1, то нужно "inc ax"... "mov ax, 33" можно на "mov al, 33" заменить - целый байт экономии! |
|||
|
||||
| froggy82 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 25.9.2006 Где: Архангельск Репутация: нет Всего: нет |
Я думаю задание верное. так как в других вариантах признаки окончания либо 0, либо 127, либо 255 или - , т.е. число не указано, то нулевой элемент массива – это его длина (количество элементов массива - 1). Добавлено @ 08:37 В смысле поясни? Что нужно сделать, чтобы учитывалось? |
|||
|
||||
| nobodyzzz |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 1.9.2006 Где: Минск Репутация: нет Всего: нет |
можно заменить на
|
||||||
|
|||||||
| froggy82 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 25.9.2006 Где: Архангельск Репутация: нет Всего: нет |
Итак, как я понял итоговым кодом будет следущее?
......на словах получается что мы узнаем по какому адресу в памяти расположена переменная array, затем считываем ее значение из памяти в регистр di . Далее загружаем слово из цепочки в регистр al, тут все таки решил сэкономить целый байт Далее сравниваем 3 c al, если элемент схож заменяем его на 33 и записываем в тот же массив......... А теперь то ЧТО НЕПОНЯТНО если заменяем элемент на 33 то зачем прыгать на начало цикла, если задача выполнена, может поставить exit: ? И еще можете пояснить что мы сравниваем? числа? то есть переменная это обычное число? Это сообщение отредактировал(а) froggy82 - 5.10.2006, 11:36 |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
|
|||
|
||||
| froggy82 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 25.9.2006 Где: Архангельск Репутация: нет Всего: нет |
dumb, Спасибо в воскресение узнаю, правильно ли ....
|
|||
|
||||
| froggy82 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 25.9.2006 Где: Архангельск Репутация: нет Всего: нет |
dumb, спасибо, еще раз, ответ почти правильный, вот что вышло у меня в итоге:
Надо было использовать 32 разрядный регистр, и так как команда stosw некорректна, т.к. записывает значение уже на шаг вперед, используем более простые команды.
|
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
это должно было быть указано в самом начале... и вообще - ты б хоть сказал(узнал) на чем вы там пишете и подо что.
если это цитата препода, то препод тот еще. код абсолютно правильный - задачу выполняет. не очень разумно производить запись каждого элемента - это да... так было сделано для сокращения кол-ва строк кода... |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |