如何在C程序中用汇编语言编写while loop\if语句?
How to write a while loop\if statement with assembly language in C program?
我正在尝试编写一个程序来读取一个句子并计算大写字母的数量。
具体来说,我正在尝试将下面显示的 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':标识符是保留字。对于任何编码错误,我深表歉意,我是汇编语言的新手。任何帮助或建议将不胜感激。
您得到的错误代码相对简单;您正在使用标识符 '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 程序集,因此禁止用作标签。不过,它似乎是偶然包含在这里的,因为没有定义这样的标签,而且没有它循环看起来很完整。
我正在尝试编写一个程序来读取一个句子并计算大写字母的数量。
具体来说,我正在尝试将下面显示的 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':标识符是保留字。对于任何编码错误,我深表歉意,我是汇编语言的新手。任何帮助或建议将不胜感激。
您得到的错误代码相对简单;您正在使用标识符 '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 程序集,因此禁止用作标签。不过,它似乎是偶然包含在这里的,因为没有定义这样的标签,而且没有它循环看起来很完整。