20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
1

Операции со строками

26.10.2013, 19:55. Показов 782. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Среда: FASM

Есть строка, записанная в ArrayZ (правильно ли записана?), необходимо, в ней, найти те слова, буквы которых расположены по алфавиту.

Создал 2 массива, как видно: массив самой строки и массив алфавита, сравниваю посредством вложенных циклов, но:

Судя по всему, в этой строке, оно сравнивает не содержимое по адресам, а cmp [esi], [edi] не является правильным синтаксисом
Assembler
1
cmp esi, edi ; сравниваем содержимое ячеек массивов
и как следствие:

Джампер не работает
Assembler
1
je t1 ; если равны, выходим из цикла

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
format PE Console 5.0
entry Start
 
include 'win32a.inc'
 
section '.data' data readable writeable
i db 58
j db 27
k db ?
ArrayZ db 'abc set on the pipe, a drop, b lost, who stay on the pipe.',0
ArrayABC db 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' ',0
 
section '.text' code readable executable
 
Start:
        movsx ecx, [i]
        lea esi, [ArrayZ]  ;адрес первого массива
        lea edi, [ArrayABC]  ;адрес второго массива
point:
      push ecx    ; заносим i(sizeof ArrayZ) в стек
      movsx ecx, [j] ; записываем j (sizeof ArrayABC) в регистр счетчика
k1:      
      cmp esi, edi ; сравниваем содержимое ячеек массивов
      je t1 ; если равны, выходим из цикла
      inc edi  ; если не равны, инкрементируем массив алфавита
      loop k1
t1:
      inc esi ; инкремент ячейки первого массива (строки)
      pop ecx ; достаем содержимое из стека
      loop point
Exit:
  invoke  ExitProcess, 0
 
 
section '.idata' import data readable
 
  library kernel, 'KERNEL32.DLL'
 
  import kernel,\
    ExitProcess, 'ExitProcess'
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2013, 19:55
Ответы с готовыми решениями:

Арифметические операции над строками и символами.
1. Написать программу на языке программирования Assembler процессора х86 для вычисления значения...

Работа со строками(операции над строками)
Пусть дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных...

Операции со строками
Помогите, пожалуйста Ввести два отдельных строки, содержащие по меньшей мере по 4 слова. Выполните...

Операции со строками
Подскажите, пожалуйста, как можно осуществить данную идею: Есть два RichTextBox-а, в первом я...

4
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
27.10.2013, 12:29 2
код не читал особо, но надо вместо
Assembler
1
cmp esi, edi
сделать
Assembler
1
2
mov al,[esi]
cmp al,[edi]
1
193 / 188 / 18
Регистрация: 06.10.2013
Сообщений: 357
27.10.2013, 13:10 3
Цитата Сообщение от sh2ezo Посмотреть сообщение
mov al,[esi] cmp al,[edi]
Либо
Assembler
1
cmpsb
использовать.
1
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
27.10.2013, 13:48  [ТС] 4
Прогнаться - прогнался, сравнил, но как определить последовательность символов в соответствии с массивом ArrayABC?

Добавлено через 5 минут
И есть ли в ASM аналог sizeof(), для замены

Assembler
1
2
i db 58
j db 27
на размер строк?
0
webdizainer
31.10.2013, 12:38 5
Спасибо за консультацию
31.10.2013, 12:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2013, 12:38
Помогаю со студенческими работами здесь

Операции со строками
Привет всем!Я замучился c задачками в java связанные со строками! Например не могу написать этот...

Операции со строками
1.Дана строка текста, в которой есть хотя бы один пробел. Подсчитать количество символов...

Операции со строками
Значит, задание звучит так: Дан символ C и строки S, S0. После каждого вхождения символа C в...

Операции со строками
помогите пожалуйста с заданием в Delphi: Дана строка содержащая текст. найти длину самого длинного...

Операции со строками
Прошу помощи! Суть проблемы: Программа ищет слово с определенной буквой(задает пользователь) и...

Операции со строками
Здравствуйте!!! Прошу помочь решить задачу. И главная просьба,мне не нужно готового решения....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru