計算結果はバイト型で収まる数値になりますが、
計算過程の途中でダブル・ワード型が必要な場合の最も合理的なプログラムの記述方法は?
例)
AのBにおける百分率Cを四捨五入して求める。
計算式 :
C=(A×100+B÷2)÷B
以下のような記述した場合、答えCをlong int宣言することになり、領域の確保が1バイトで済むところを、
4バイトも確保しなければなりません。
アセンブラで記述すれば#asm以降のような記述で答えが出ます。
このようにCで計算過程の途中の数値だけをダブル・ワード型にできますか?
void _x()
{
c = ((unsigned long int)a * (unsigned long int)100 + (unsigned
long int)b / (unsigned long int)2) / (unsigned long int)b;
/*
#asm
extrn _a
extrn _b
extrn _c
movw ax, !!_a
movw de, #100
muluw de
movw bc, !!_b
shrw bc, 1
addw de, bc
addc x, #0
addc a, #0
movw bc, !!_b
divux bc
mov !!_c, e
#endasm
*/
}