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

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

07.07.2011, 17:14. Просмотров 1550. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.07.2011, 17:14
Ответы с готовыми решениями:

Программа "Hello World" из книги Крупника А. "Изучаем ассемблер" не выводит строку
Здравствуйте! :) Начал изучать Ассеблер по книге Крупника А. "Изучаем ассемблер". Переписал...

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

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

Занести в стек "x" и "y". Внести "y" в bx (внести "x" в bx)
Препод задолбал своими вопросами, приходится снова просить помощи у вас. Вот задание Занести в...

6
2530 / 826 / 10
Регистрация: 31.05.2009
Сообщений: 1,669
07.07.2011, 18:09 2
Вероятно потому, что вы сравниваете указатель с кодом пробела, а не то, что на что указывает уазатель.
Assembler
1
cmp byte ptr [eax],' '
так попробуйте
1
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
09.07.2011, 11:15  [ТС] 3
byte ptr [eax] - это разве не то же самое что offset EAX???
0
231 / 101 / 6
Регистрация: 18.04.2010
Сообщений: 294
09.07.2011, 12:24 4
Нет. У Вас же в листинге даже есть в конце инструкция:
Assembler
1
mov byte ptr [ECX], 0;записываем конец строки
Тут вы получаете последний байт строки и туда записываете 0. А для сравнения Вы должны получить конкретный байт строки. Поэтому Goodwin98 прав.
1
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
Ушел с форума
Автор FAQ
14173 / 7057 / 831
Регистрация: 11.11.2010
Сообщений: 12,665
22.07.2011, 04:56 6
Dimarik__, прочитай в справочнике про команду ассемблера repe cmps или используй Win API strcmp или strcmpi если без учета регистра
1
7 / 7 / 0
Регистрация: 05.08.2011
Сообщений: 54
06.08.2011, 22:40 7
Судя по всему регистр для адресации не тот взяли. Это должны быть ESI или EDI, в крайнем
случае EBX. Кроме того, если в регистре адрес, то неплохо бы его еще и разименовать [ESI].
Правда сразу после разименования нельзя сравнить, т.е. результат разименования надо присвоить
в промежуточный регистр. Остальной код еще не смотрел .
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2011, 22:40

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Обработка прерывания "ошибочная команда" или "неверная команда"
Привет форумчани! Очень нужна ваша помощь... Нужно написать программу, которая будит сообщать о...

Необходимо установить в "1" бит 5 регистра DL, если цепочка содержит цифру
Пусть в области с адресами от STRING до STRING+16 находится цепочка символов. Необходимо установить...

Задание типа:"мишень". Где ошибка?
Вот вроде чуть-чуть разобрал ассемблер, но всё же не могу понять где ошибка. Вот такое условие...

Тип данных "слово".
Напишите программу, копирующую 5 слов (1000, 2000, 3000, 4000, 5000) из одной области памяти в...


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

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

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