Поиск всех вхождений любого символа второй строки в первой (реализация strpbrk) - Assembler

Узнай цену своей работы

Формулировка задачи:

Заданы две строки. Поиск всех вхождений любого символа второй строки в первой. Реализовала так:
section '.data' data readable writeable      
 
MESSAGE db "Enter string %d",13,10,0
RESULT_1 db "RESULT is %d",13,10,0
s1 db 250 dup(0)
s2 db 250 dup(0)
pos db 250 dup(0)
LEN dd 0
LEN2 dd 0
 
section '.code' code readable executable     
 
start:                                       

        ccall [printf], MESSAGE, dword 1
        ccall [gets], s1
        ccall [printf], MESSAGE, dword 2
        ccall [gets], s2

        ccall [strlen],s1
        mov [LEN], eax
        ccall [strlen], s2
        mov [LEN2], eax
 
        push  ds
        pop   es
        cld
        xor    bx,bx
        lea ebx,[s2]
        push ebx
        mov esi, ebx
 
        mov  edx,[LEN]   
L1:
        lodsb             
        mov   ecx,[LEN2]
        lea eax,[s1]
        mov edi, eax
        repe scasb    ;сканируем 1-ую строку  
        jz  equal ;такой символ есть в 1-ой строке     
        mov eax,esi
        pop ebx
        sub eax,ebx
        dec eax
        mov byte ptr pos[ebx],ax ;   ??????
        inc ebx
equal:
        dec  edx
        jnz L1
        ccall [printf], RESULT_1, ebx
        jmp exit

exit:
        ccall [getchar]
        stdcall [ExitProcess], 0
Ошибку выдает в строчке,где я пытаюсь записать в массив pos позицию непредставленного символа. Подскажите, что делать?

Решение задачи: «Поиск всех вхождений любого символа второй строки в первой (реализация strpbrk)»

textual
Листинг программы
char * pos;
..................
if (!pos) cout<<*pos

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы