アセンブラを勉強しよう
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
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でいい。 651:デフォルトの名無しさん 09/01/17 11:28:03 >>650 C言語もよくわからないけどなんとなくわかってきたw ただADDの列が2回ある意味がわかりませぬorz 大切なことだから2度言いました、が思い浮かぶ…w 652:デフォルトの名無しさん 09/01/17 11:37:36 だから、ax = ax + 2 * bx - 1なんだってば。 試しに、(逆順になるけど) 1 + 3 + 5 + 7 + 9 + 11 + ... って計算を手でしてご覧。 1, 4, 9, 16, ... って風に平方数が出てくるのが判るべさ。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5401日前に更新/195 KB
担当:undef