MASM Εκτύπωση Άγνωστη Char

ψήφοι
0

Έτσι έχω ένα πρόγραμμα που διαρκεί δύο χορδές που εισάγει ο χρήστης. Ένα πρέπει να αναζητηθούν, και ένα γεμάτο με χαρακτήρες για την αναζήτηση. Κωδικός για τη λειτουργία του έχει ως εξής:

.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

Αλλά όταν τρέχω το πρόγραμμα, απλά εκτυπώνει ένα από αυτά ερωτηματικό σε ένα κουτί χαρακτήρες.

Είναι ενδιαφέρον, αν μπορώ προσθέστε τη γραμμή call writeStringαμέσως μετά L1:τις εκτυπώσεις αποτελέσματα συμβολοσειρά, ακολουθούμενη από string1 πολλές φορές και στη συνέχεια το μυστήριο εξανθράκωμα.

Θα πρέπει να εκτυπώσετε μόνο το string αποτελέσματα, αλλά δεν είμαι σίγουρος τι στην εδώ με αποτέλεσμα να μην είναι εκτυπώσιμο από μόνη της. καλύτερη εικασία μου θα ήταν κάποιο είδος έκδοσης δείκτη, αλλά δεν είμαι θετικός.

Δημοσιεύθηκε 07/11/2018 στις 23:39
πηγή χρήστη
Σε άλλες γλώσσες...                            

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