2
我正在尝试编写一个程序来读取一个句子并计算大写字母的数量。如何在C程序中编写一个while循环 if语句和汇编语言?
具体我想转换如下图所示成汇编语言的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:'循环':标识符是保留字。对于任何编码错误对不起,我是汇编语言的新手。任何帮助或建议将不胜感激。
x86指令集包含'loop',我认为该消息表明该标识符让ibstructuon感到困惑。而且,x86'je'指令将占用一个操作数,而不是两个。 – MikeCAT
另外,在x86中不会有'jmp'指令没有操作数。哪里跳? – MikeCAT
'do {stuff} while(condition)'循环更容易翻译成asm(因为条件已经在底部,所以你不必在循环之前复制它)。因此,如果你的算法在第一次迭代之前不需要测试,那么就这样想。 –