我正在尝试编写一个程序来读取一个句子并计算大写字母的数量。
具体来说,我试图将下面显示的c代码转换为汇编语言:
scanf("%c", &L );
while(L !='\n')
{
if(L>='A' && L<='Z')
V++;
scanf("%c", &L);
}
这是我的汇编代码:
_asm
{
call read
mov V, 0;
while: cmp L, '\n'
je exit,loop
cmp L, 'A'
jl cont
cmp L, 'Z'
jg cont
inc V
cont: call read
jmp while
exit: jmp
}
但是这段代码没有成功运行,因为我不断收到一条错误消息:警告C4405:'loop':标识符是保留字。对不起任何编码错误,我是汇编语言的新手。任何帮助或建议将不胜感激。
答案 0 :(得分:2)
您获得的错误代码相对简单;你正在使用标识符'loop'作为你的je的(无关的)操作数(跳转相等)。你的最终无条件跳转也需要某种类型的操作数。
_asm
{
call read
mov V, 0;
while: cmp L, '\n'
je exit
cmp L, 'A'
jl cont
cmp L, 'Z'
jg cont
inc V
cont: call read
jmp while
exit: jmp somewhere
}
标识符'loop'用于x86程序集,因此禁止用作标签。看来它偶然包含在这里,因为没有定义这样的标签,如果没有它,循环就会显示完整。