アセンブラを勉強しよう
at TECH
650:結論は最後にw
09/01/17 09:26:48
>>649
16進数に慣れておく必要があるな。
11はb(16)となる。
つまり、mov bx, bで11を代入しているわけだ。
他を見てないのだけど、一応C風に書き直すとこうなる。
ax = 0;
bx = 11;
do {
ax += bx;
ax += bx;
--ax;
--bx;
} while (bx != 0);
これを更に書き直すとこう。
ax = 0;
bx = 11;
do {
ax += 2 * bx - 1;
--bx;
} while (bx != 0);
これを展開すると、
ax = (2 * 11 - 1) + (2 * 10 - 1) + ... + (2 * 1 - 1);
となって、
ax = 21 + 19 + ... + 1;
となり、これは当然121になる。
つまり、奇数列の初項からの部分和が平方数になることを利用しているわけだ。
要は8の2乗にしたいのなら、単純にmov bx, 8でいい。
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5401日前に更新/195 KB
担当:undef