MASM Tisk Neznámá Char

hlasů
0

Takže mám program, který trvá dva vstupní uživatelské řetězce. Jedna mají být prohledány, a jeden naplněný znaků hledat. Kód funkce je následující:

.data
    string1 DWORD 101 DUP(?),0
    string2 DWORD 11 DUP(?),0
    results DWORD 11 DUP(?),0
    resultsStore DWORD 0,0
    prompt1 BYTE Enter your first String: ,0
    prompt2 BYTE Enter the chars to search: ,0
    storeLoop DWORD 0
    storeCount DWORD 0
.code
main PROC
    mov edx, offset prompt1                     ;moves the first prompt into edx
    call writeString                            ;prints the first prompt
    mov edx, offset string1                     ;moves the first response into edx
    mov ecx, 100                                ;sets the limit for the first respsonse
    call ReadString                             ;read user input into the first response
    mov edx, offset prompt2                     ;moves the second prompt into edx
    call writeString                            ;prints the second prompt
    mov edx, offset string2                     ;moves the second response into edx
    mov ecx, 10                                 ;seets the limit for the second response
    call ReadString                             ;read user input into the second response
    call checkMatch
    call crlf
    call WaitMsg
    invoke ExitProcess,0
main ENDP    

checkMatch PROC
        L1:
            mov ebx, storeCount                     ;store the count to access chars in string
            mov storeLoop, ecx                      ;store the count running the outer loop
            mov ah, BYTE ptr [edx+ecx]              ;move individual char to al
            inc ebx                                 ;increment the position in the string
            mov storeCount, ebx                     ;store the string position      
            mov edx, OFFSET string1                 ;move string1 into edx
            mov ebx, 0                          
            L2: 
                mov al, BYTE ptr [edx+ebx]          ;move the next char into al
                cmp ah, al                          ;check if chars match
                je match                            ;if yes, jump to match
                inc ebx                             ;increment ebx
                loop L2
            jmp next
            match:
                mov ebx, resultsStore               ;move next location in string to ebx
                mov results[ebx*4], ecx             ;store char in next open location
                inc resultsStore                    ;increment the location of the next open spot
            next:
                mov ecx, storeLoop                  ;store the outer loop count 
                loop L1
        mov edx, offset results
        call writeString
        ret
        checkMatch ENDP

    END main

Ale když jsem spustit program, je to prostě vytiskne jeden z těch otazník v krabici znaků.

Zajímavé je, že když jsem přidat řádek call writeStringhned po L1:výsledcích smyčcových tisků, následovaný String1 vícekrát a pak tajemství char.

Musím jen vytisknout řetězec výsledků, ale nejsem si jistý, co tady je přimět to, aby neměla být tisknutelné na jeho vlastní. Můj nejlepší odhad by byl nějaký druh problému s ukazatelem, ale nejsem pozitivní.

Položena 07/11/2018 v 23:39
zdroj uživatelem
V jiných jazycích...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more