Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Dimarik__
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
1

Необходимо строку тип ""str1" "str2"",0 преобразовать в строку типа

07.07.2011, 17:14. Просмотров 1160. Ответов 6
Метки нет (Все метки)

Необходимо строку тип ""str1" "str2"",0 преобразовать в строку типа
"str2",0
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
label_parse_string:
        inc EAX
        cmp EAX, ' '
            jnz label_parse_string
    add EAX,2;теперь найдено начало строки адреса удаляемого файла
    mov ECX, EAX; Теперь ECX указывает на начало строки адреса удаляемого файла
    test EAX, EAX;проверка на ошибку
        jz @q
    label_end_of_string:
        inc ECX
        cmp ECX,'"'
            jnz label_end_of_string
    mov byte ptr [ECX], 0;записываем конец строки
В EAX находится указатель на начало строки. Непонятно, почему у меня проверка не работает:
cmp EAX, ' '
jnz label_parse_string
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2011, 17:14
Ответы с готовыми решениями:

Программа копирует символы из строки str1 в строку str2 после первого вхождения буквы "a".
Пожалуйста помогите еще парочку задачек.:( 1 Найти ошибки в программе,объяснить их и...

Есть строка. Нужно сделать так, чтобы "re" и "not" заменялись на "***".
Есть строка. Нужно сделать так, чтобы "re" и "not" заменялись на "***". Data Segment para 'Data'...

Изъять слова, которые имеют префикс "re", "not", "be"
Заданы символьная строка. Слова и идентификаторы разделяются хотя бы одним символом пробела....

Заменить во вводимом тексте каждое слово "ЭВМ" словом "машина"
Здравствуйте. Поможете разобраться с ниже приведенной задачей: Заменить во вводимом тексте...

Дана строка "ababab", из этого слова надо получить "aaa"
Собственно сабж. Дана строка "ababab", надо удалить буквы "b" и получить слово "ааа" Спасибо)

6
Goodwin98
2524 / 820 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
07.07.2011, 18:09 2
Вероятно потому, что вы сравниваете указатель с кодом пробела, а не то, что на что указывает уазатель.
Assembler
1
cmp byte ptr [eax],' '
так попробуйте
1
Dimarik__
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
09.07.2011, 11:15  [ТС] 3
byte ptr [eax] - это разве не то же самое что offset EAX???
0
6a6kin
231 / 101 / 6
Регистрация: 18.04.2010
Сообщений: 294
09.07.2011, 12:24 4
Нет. У Вас же в листинге даже есть в конце инструкция:
Assembler
1
mov byte ptr [ECX], 0;записываем конец строки
Тут вы получаете последний байт строки и туда записываете 0. А для сравнения Вы должны получить конкретный байт строки. Поэтому Goodwin98 прав.
1
Dimarik__
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
21.07.2011, 16:17  [ТС] 5
Задача похожая. Нужно сравнить строки str1, str2. Причём str1 заранее известно, str2 получается при выполнении программы
Assembler
1
2
3
4
5
6
mov AH, str1;загружаем регистр str1
        mov AL, str2
mov BH, byte ptr [AH]
            cmp BH, byte ptr [AL];проверяем буквы
                jnz go_NEXTLABEL
;ну и так далее проверять циклом
MASM ругается сильно, что "must be index or base register
в строках:
mov BH, byte ptr [AH]
cmp BH, byte ptr [AL]
0
Mikl___
Автор FAQ
13381 / 6381 / 630
Регистрация: 11.11.2010
Сообщений: 11,542
22.07.2011, 04:56 6
Dimarik__, прочитай в справочнике про команду ассемблера repe cmps или используй Win API strcmp или strcmpi если без учета регистра
1
mac_alleb
7 / 7 / 0
Регистрация: 05.08.2011
Сообщений: 54
06.08.2011, 22:40 7
Судя по всему регистр для адресации не тот взяли. Это должны быть ESI или EDI, в крайнем
случае EBX. Кроме того, если в регистре адрес, то неплохо бы его еще и разименовать [ESI].
Правда сразу после разименования нельзя сравнить, т.е. результат разименования надо присвоить
в промежуточный регистр. Остальной код еще не смотрел .
0
06.08.2011, 22:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2011, 22:40

Как реализовать рекурсию через "call" и "ret"?
kak realizovat rekursiu 4erez "call" i "ret"? nujno predstavit naturalnoe 4islo v dvoi4nom vide...

Ввести строку, если в ней есть запятые, то поменять их на ";"
Доброе время суток уважаемые программисты. Есть такая задачка, нужно написать на ассемблере: ...

Заполнить строку по центру экрана символом "&"
Помогите пожалуйста... Заполнить строку по центру экрана символом &.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru