Сборка - оператор If для проверки правильности ввода правильного номера - PullRequest
0 голосов
/ 24 марта 2019

Таким образом, для универсального задания мы должны создать программу шифрования / дешифрования с использованием C ++ и Assembly.Программа принимает 6-буквенную строку, а затем выполняет часть программы шифрования / дешифрования.Обе эти части работают правильно, но мы также должны проверить, являются ли введенные символы буквенно-цифровыми.Я пытаюсь начать с проверки сначала правильной цифры, а затем я могу добавить проверку на буквы позже.Это код, который я получил до сих пор;

void get_char(char& a_character)
{
    a_character=(char) _getwche();

    __asm
    {
        push eax               // save value to the stack for later use
        mov eax, a_character   // store the character in EAX
        cmp eax, 0x30          // compare character with '0'
        jl invalid             // (character < 0) and is therefore invalid
        cmp eax, 0x39          // compare character with '9'
        jg invalid             // (character < 0) && (character > 9) so it is therefore invalid
        jmp valid              // character is within the accepted range and is therefore valid
    }

    __asm
    {
    invalid:
    }

    cout << "\n invalid > ";

    __asm
    {
    valid:
        pop eax
    }

    if (a_character == '\r' || a_character == '\n')
    {
        a_character = dollarchar;
    }
}

Я ожидаю, что код проверит, является ли введенное значение <0, и если это так, тогда перейдите к неверному разделу и напечатайте строку, говорящую, чтозначение недействительно.И затем сделайте то же самое для> 9. Но по какой-то причине, независимо от того, какой символ я ввожу, он все равно печатает неверную строку.Я уверен, что это действительно простое решение, но я просто не могу понять, что идет не так, и любое решение, которое я пробую, просто вызывает другую проблему.

Заранее спасибо.

...