обновлена ​​подстрока поиска сборки nasm - PullRequest
0 голосов
/ 02 октября 2018

Я ищу подстроку из пользовательского ввода и не могу сравнить и найти ее.у меня возникают проблемы при сравнении строки и подстроки в моем цикле.

строка:

"Рыцарь Райдер - призрачный полет" "в опасный мир" "человека, которыйне существует. Mich "" ael Knight, молодой одиночка в "" крестовом походе, чтобы отстаивать интересы "," невинных, безобидных "," беспомощных в мире "" преступников, которые действуют за пределами "" eзакон. Рыцарь Райдер, Храни "" храбрость в ночи. "

код, который у меня есть.

found:  ; If string was found print location

    ;;  Following is a snippet of code for
    ;;  printing out the digits of a number if its more
    ;;  than one digit long
    sub     rsi, rdx
    mov     r10, 1  ; Keeps track of the number of digits to be printed
    mov     rdi, loc ; Store the address of location buffer
    mov     cl, 10  ; Print out its digits using a loop
    cmp     ax, 9   ; Is the number larger than a single digit?
    jg      digits  ; if so, jump to store the digits routine
    mov     rbx, rax ; Copy the value into rbx (Used later by a shifting
                    ; out routine)
    add     bl, '0' ; Add the ASCII character offset for numbers
    jmp     shOut   ; Shift out routine

мой цикл для поиска подстроки находится ниже

loop: ;loop until all substring is found
    add     al, [rdi+0]
    jz      nope
    cmp     rax, rdx
    je      decc3
    shl     rax,8

    add     al, [rdi+1]
    jz      nope
    cmp     rax, rdx
    je      decc3
    shl     rax,8

    add     al, [rdi+2]
    jz      nope
    cmp     rax, rdx
    je      decc3
    shl     rax, 8

    add     al, [rdi+3]
    jz      nope
    cmp     rax, rdx
    je      found
    shl     rax, 8

    lea     rdi, [rdi+4]
    jmp     loop

decc3:  dec     rdi
...