アセンブラを勉強しよう at TECH
[2ch|▼Menu]
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