![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() ![]() |
![]() |
18192123 |
![]()
Сообщение
#1
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Ниже реализуется сортировка массива чисел по возрастанию. Но мне требуется сортировать не сами элементы, а произвести сортировку по возрастанию ASCII кода символа. Объясните пожалуста, как это реализовать?
|
andriano |
![]()
Сообщение
#2
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Непонятно, в чем проблема, т.к. ASCII-код - это тоже число (байт), поэтому сортировка по нему ничем не отличается от сортировки чисел.
PS. Код не смотрел, т.к. вообще обычно не смотрю исходники, которые их авторы забывают снабжать комментариями. |
xds |
![]()
Сообщение
#3
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
18192123, поясни пожалуйста, что имеется в виду (можно на примере).
-------------------- The idiots are winning.
|
18192123 |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
18192123, поясни пожалуйста, что имеется в виду (можно на примере). есть последовательность символов (НЕОБЯЗАТЕЛЬНО числа), мы их должны отсортировать по их ASCII кодам. и у меня не получается провести аналогию символа с его кодом программно, на ассемблере. дано: 2 5 * ! : в итоге, после сортировки: ! * 2 5 : |
xds |
![]()
Сообщение
#5
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
Тебе надо просто заменить массив слов на массив байтов. Символы при компиляции будут автоматически преобразовываться в числа-байты с соответствующим кодом ASCII.
Т. е., земеняешь Код mas dw 2,7,4,0,1,9,3,6,5,8 наКод mas db 'SoMeChArS.' ,Код mov dx,mas[si] наadd dl,30h ... add si,2 Код mov dl,max[si] ... inc si Т. е., везде работу со словами заменяешь на работу с байтами. -------------------- The idiots are winning.
|
18192123 |
![]()
Сообщение
#6
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
18192123 |
![]()
Сообщение
#7
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
xds |
![]()
Сообщение
#8
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
mov bx,ishl bx,1 - это bx = bx * 2, т. е. подготовка к индексации слов размером 2 байта. Поскольку мы работаем с байтами, просто убираем умножение на 2, а пересылку заменяем на байтовую (хотя, в данном случае не обязательно - нужный байт по адресу mas[bx] все равно попадет в al). От shl bx,1 надо избавится во всей программе. Указанный участок заменяется на mov bx,iили mov bx,i -------------------- The idiots are winning.
|
GriNDeR |
![]()
Сообщение
#9
|
Гость ![]() |
а даите код как это будет выглядить в конечном виде я малость не понял
и еще как это будет выглядеть если наоборот сортировка идет (с большего) |
GriNDeR |
![]()
Сообщение
#10
|
Гость ![]() |
а даите код как это будет выглядить в конечном виде я малость не понял
и еще как это будет выглядеть если наоборот сортировка идет (с большего) |
18192123 |
![]()
Сообщение
#11
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Так я до конца и не разобралась...Что-то упустила...Не работает у меня программа...Объясните пожалуста...
|
xds |
![]()
Сообщение
#12
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
Там мелкие синтаксические ошибки: TASM все-таки ругается на несоответствие размеров операндов, поэтому лучше делать mov al,mas[bx], чем дописывать byte ptr. Кроме того, что-то глючило в цикле сортировки. Он он был плохо читаем, поэтому я его переписал с комментариями (метод - "пузырек"). Кроме того, прибавлять 30h к коду символа не нужно, т. к. мы работаем уже не с десятичными цифрами, а со всеми символами ASCII.
assume CS: code, DS: data -------------------- The idiots are winning.
|
![]() ![]() |
![]() |
Текстовая версия | 7.07.2025 23:16 |