MASM Printing Unbekannt Char

stimmen
0

Also ich habe ein Programm, das zwei Strings Benutzereingabe erfolgt. Eine gesucht werden, und ein mit Zeichen gefüllt zu suchen. Code für die Funktion ist wie folgt:

.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

Aber wenn ich das Programm ausführen, druckt es nur eines dieses Fragezeichen in einem Kasten Zeichen.

Interessanterweise , wenn ich die Zeile call writeStringdirekt nach L1:den Ergebnissen Zeichenfolge druckt, gefolgt von string1 mehrere Male und dann das Geheimnis char.

Ich muss nur die Ergebnisse Zeichenfolge drucken, aber ich bin nicht sicher, was hier drin ist, so dass es nicht auf eigene bedruckbar sein. Meine beste Vermutung wäre eine Art Zeiger Problem sein, aber ich bin nicht positiv.

Veröffentlicht am 07/11/2018 um 23:39
quelle vom benutzer
In anderen Sprachen...                            

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