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(因爲條件已經在底部,所以你不必在循環之前複製它)。因此,如果你的算法在第一次迭代之前不需要測試,那麼就這樣想。 –