- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CASLIIのADDAとADDLの演算)
CASLIIのADDAとADDLの演算
このQ&Aのポイント
- CASLIIのADDAとADDLの演算についての質問です。
- ADDA命令とADDL命令の値の範囲についての疑問があります。
- 演算結果が値の範囲を超える場合の挙動について教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 32767をGR1に入れて、1加算する。 > だからGR1 = 32768 > と思ったのですが、先生の書いた答えは > -32768 #8000 を絶対値 (Logical) で見れば 32768, 2の補数表現 (Arithmetical) で見れば -32768 というだけです。 CASLII では加算命令がそれぞれ ADDL, ADDA と別々に用意されていますが、実際やってることは FR レジスタの動きを除けば全く同じで、その計算結果を絶対値と見るか負数と見るかはプログラマの都合次第です。 ですから答に符号付きdecimalでと求められたら -32768 ということです。 > その場合、先ほどの問題のADDAの問題で > 32767 + 1 をしたら範囲を超えてしまいます。 > このような場合どうなるのでしょうか? FR レジスタの Overflow Flag を各々確認してみてください。どちらも GR1 は #8000 ですが OF は ADDA でだけ 1 になります。 > ADDLの場合も範囲を超えてしまったらどうなるのですか? OF が 1 になる境界が違いますが同様です。逆に #7FFF+1 したときは 0 のまま ちなみ同じことは SUBL, SUBA にも言えます