2 / 2 / 2
Регистрация: 20.10.2016
Сообщений: 130
|
|
1 | |
Поменять в матрице четные столбцы с нечетными используя цепочечные команды06.05.2018, 17:48. Показов 1906. Ответов 3
Метки нет (Все метки)
Задача: Поменять в матрице четные столбцы с нечетными используя цепочечные команды.
Уже реализовал данную задаче без цепочечных команд, основа алгоритма такая: Код
mov ax, [si] mov bx, [si+2] mov [si], bx mov [si+2], ax Но я не могу решить эту же задачу используя цепочечные команды. Как используя lods брать следующий элемент и как поменять его с текущим? Как бы вы решили данную задачу? Добавлено через 5 часов 34 минуты Планирую сделать так: Создаю дополнительный массив. В цикле с помощью lods получаю элементы массива, первый элемент записываю в регистр bx, как только получаю второй элемент записываю его на первую позицию дополнительного массива, а на вторую позицию записываю элемент из регистра bx. Но такая реализация меня не устраивает, хотелось бы обойтись без дополнительного массива.
0
|
06.05.2018, 17:48 | |
Ответы с готовыми решениями:
3
Поменять местами два числа из разных сегментов данных используя цепочечные команды Поменять четные строки с нечетными в квадратной матрице Поменять местами четные слова с нечетными, используя функцию strtok Цепочечные команды: поменять местами крайние символы |
3408 / 1827 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
||||||
06.05.2018, 18:40 | 2 | |||||
Сообщение было отмечено EDWIN503 как решение
Решение
2
|
2 / 2 / 2
Регистрация: 20.10.2016
Сообщений: 130
|
|||||||||||
07.05.2018, 07:57 [ТС] | 3 | ||||||||||
Constantin Cat, Возник небольшой вопрос по поводу алгоритма работы.
Как я понял
Добавлено через 12 минут Так же есть еще одна проблема. Мне нужно обработать случай в котором на вход поступает матрица с нечетные количеством столбцов. В такой ситуации последний элемент последнего столбца будет меняться с первым элементом первого столбца, а это не лучшее решение. Я примерно понимаю как исправить данную проблему, нужно сравнивать cx с 2, потому что на предпоследнем столбце cx как раз и будет равно 2, после нужно добавить к si 4 байта, чтобы перепрыгнуть на следующую строку пропуская последний столбец. Но как заставить lodsw пропустить один элемент я не знаю
0
|
3408 / 1827 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|
07.05.2018, 09:01 | 4 |
Вы миниатюру смотрели? Там до и после работы кода, смотрите на адрес 0х0115.
Вот и изучите, только не цепочечные, а строковые. 1)
1
|
07.05.2018, 09:01 | |
07.05.2018, 09:01 | |
Помогаю со студенческими работами здесь
4
Вставить в строку символы, обязательно используя цепочечные команды Используя цепочечные команды, выполнить сохранение содержимого регистра AX в область по адресу PRLINE +5 Удалить четные столбцы в динамической матрице Как удалить чётные столбцы в матрице Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |