因此,对于单任务,我们必须使用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也执行相同的操作。但是由于某种原因,无论我输入什么字符,它都只会打印无效的字符串。我确信这是一个非常简单的解决方案,但我只是无法弄清楚出了什么问题,而我尝试的任何解决方案似乎都可能导致另一个问题。
谢谢。