質問: アセンブリ言語で0.25倍 初投稿です。変なところがあると思いますがすみません。 16進数で4桁の値を入力して、入力した値を0.25倍にしたいです。 10進数なら例えば、20/5をするとします。 20-5=15 15-5=10 10-5=5 5-5=0 という感じで、商を10進数なら求めることができるので 16進数でも同じ処理をしてみました。 すると、64(100)/4(4)=15(21)と出てしまいました. ()内10進数 19(25)という数が出れば正解です。 割る数を変えてみたり、動きを追ってみたのですが、根本的に考えたかたが間違ってる気がします。 ご指摘よろしくお願いします。 プログラムはすべて2バイトずつ ``` 0200: 0064 #X 0202: #Y 0204: 0004 0206: 0000 0208: 0000: 0064 0200 #[200]→ACC 0004: 00F4 0204 #ACC-[204] ACCと[204]の比較 0008: 0033 0010 #入力が0か負だと終了 000c: 000F #FIN 0010: 00BA 0001 #ADD IX 1 IX+1→IX 0014: 00A4 0204 #SUB ACC [204] ACC-[204]→ACC 0018: 00F1 #ACCとIXの比較 001c: 0032 0010 #割られる数が大きいと分岐 0020: 007C 0102 #IX→[102] 商の格納 0024: 000F ``` ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/4bbba97cda4ac9984747db8b1ec37cd9.png) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/5bda454b820e41871bb9b2d972f2f351.png) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/f591a1761bd13a12c5a212b9a2a37d5f.png) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/c4265ebcd9d401800e5a201ec64e2c89.png)
回答: 提示のコードをニーモニックに読み替えるのは面倒くさいんでやってませんが、 #はやいはなし、問題は読んでない 10進の整数演算でできることは16進でもそのまま実行可能です。 答えが間違ってるなら、それは計算が間違ってるってことです。 キカイゴで記述するんでなく、アセンブリコードで記述しましょう。 本当に問題を解決したいなら、あなたができることをやってください。