возникли проблемы со сборкой обратной строки (Irvine32) - PullRequest
0 голосов
/ 02 марта 2019

У меня возникла проблема с моей программой сборки для подсчета количества заглавных букв, преобразования регистров и изменения строки.это не позволяет мне вводить строку.Пожалуйста, помогите

это мои данные

.data
    buffer BYTE 128 dup(0)
    msg1 BYTE "Enter a string of at most 128 characters:",0dh, 0ah, 0
    msg2 BYTE "Here it is in lowercase and in reverse order:", 0dh, 0ah, 0
    msg3 BYTE 0dh, 0ah, "there are",0
    msg4 BYTE "lower-case characters ", 0dh, 0ah, 0
    countLower BYTE 0

моя область ввода

.code

    main PROC

    mov ecx, 0
    mov eax, 0
    mov edx, OFFSET msg1
    call WriteString
    call ReadString

сравнить размер строки

read_again:
        cmp ecx, 128
        ja endread
        call ReadChar
    cmp al, 0Dh
    je display
    cmp al, 61h
jae test_lower
    cmp al, 41h
    jb store
    cmp al, 5Ah
    ja store
    add al, 20h
    inc countLower
    ja store

проверить последний символ

test_lower :
    cmp al, 7Ah
    ja store
    sub al, 20h

store:
    push eax
    inc ecx
    jmp read_again
endread:
    lea esi, buffer
    display:
    jecxz quit
    mov edx, OFFSET msg2
    call WriteString
again:
    pop eax
    call WriteChar
    loop again
    mov edx, OFFSET msg3
    call WriteString
    movzx eax,countLower
    call WriteDec
    mov edx, OFFSET msg4
    call WriteString
quit:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...