平成27年春期アセンブラ問題について
フリージアさん
(No.1)
ご覧下さりありがとうございます。
MULT の JPL CONT について
教えて頂きたく存じます。
ーーーーーーーーーーーーーーーーー
MULT
〔一部省略〕
LP JZE FIN
JPL CONT
LD GR4,GR1
〔一部省略〕
CONT LAD GR3,-1,GR3
SLL GR2,1
JUMP LP
ーーーーーーーーーーーーーーーーー
例として被乗数を5で乗数が10の場合
GR0:0000 0000 0000 0101 (10進数の5)
GR2:0000 0000 0000 1010 (10進数の10)
CONTで15から3まで減らしたとき
GR2:1010 0000 0000 0000
最上位ビットが1になるので
LP JZE FIN
JPL CONT
を通り抜けて
LD GR4,GR1
へ進むのが正しいと聞き及びました。
JPL CONTを通り抜けられる理由が
さっぱりわかりません…。
自力で解けるようになりたいので
どなたか教えて下さい…!
宜しくお願い致します。
MULT の JPL CONT について
教えて頂きたく存じます。
ーーーーーーーーーーーーーーーーー
MULT
〔一部省略〕
LP JZE FIN
JPL CONT
LD GR4,GR1
〔一部省略〕
CONT LAD GR3,-1,GR3
SLL GR2,1
JUMP LP
ーーーーーーーーーーーーーーーーー
例として被乗数を5で乗数が10の場合
GR0:0000 0000 0000 0101 (10進数の5)
GR2:0000 0000 0000 1010 (10進数の10)
CONTで15から3まで減らしたとき
GR2:1010 0000 0000 0000
最上位ビットが1になるので
LP JZE FIN
JPL CONT
を通り抜けて
LD GR4,GR1
へ進むのが正しいと聞き及びました。
JPL CONTを通り抜けられる理由が
さっぱりわかりません…。
自力で解けるようになりたいので
どなたか教えて下さい…!
宜しくお願い致します。
2021.05.18 02:28
aさん
(No.2)
以下のように処理が進みます。
-------------------------------
SLL GR2,1
・問題の末尾に添付記載されている「アセンブラ言語の仕様」でSLL命令の説明を見ると、汎用レジスタの状態がフラグレジスタに反映される。
⇒汎用レジスタのビット15が1なら、フラグレジスタのSFフラグがONになる。
⇒汎用レジスタの値が0でなければ、フラグレジスタのZFフラグがOFFになる。
-------------------------------
JUMP LP
・分岐命令では、フラグレジスタは変化しない(SFフラグ:ON、ZFフラグ:OFFのまま)
-------------------------------
JZE FIN
・ZFフラグがOFFなので分岐せず(JZEは、ZFフラグONで分岐(「アセンブラ言語の仕様」の分岐命令の説明参照))
-------------------------------
JPL CONT
・SFフラグがONなので分岐せず(JPLは、SFフラグとZFフラグがOFFで分岐)
-------------------------------
「論理シフトでなぜ正負を判定?」と思いましたが、符号部を含んでシフトしたいので論理シフトを使用しています。(算術シフトは符号部を除きシフトされる)
SLLは論理シフトは、演算結果がフラグレジスタに反映されます。(ビット番号15がONならSFフラグがONになります。)
-------------------------------
-------------------------------
SLL GR2,1
・問題の末尾に添付記載されている「アセンブラ言語の仕様」でSLL命令の説明を見ると、汎用レジスタの状態がフラグレジスタに反映される。
⇒汎用レジスタのビット15が1なら、フラグレジスタのSFフラグがONになる。
⇒汎用レジスタの値が0でなければ、フラグレジスタのZFフラグがOFFになる。
-------------------------------
JUMP LP
・分岐命令では、フラグレジスタは変化しない(SFフラグ:ON、ZFフラグ:OFFのまま)
-------------------------------
JZE FIN
・ZFフラグがOFFなので分岐せず(JZEは、ZFフラグONで分岐(「アセンブラ言語の仕様」の分岐命令の説明参照))
-------------------------------
JPL CONT
・SFフラグがONなので分岐せず(JPLは、SFフラグとZFフラグがOFFで分岐)
-------------------------------
「論理シフトでなぜ正負を判定?」と思いましたが、符号部を含んでシフトしたいので論理シフトを使用しています。(算術シフトは符号部を除きシフトされる)
SLLは論理シフトは、演算結果がフラグレジスタに反映されます。(ビット番号15がONならSFフラグがONになります。)
-------------------------------
2021.05.18 09:34
フリージアさん
(No.3)
教えて下さったa様へ
ご回答下さりありがとうございます!
ようやく理解が出来ました!!!
わからなくて昨日本当に眠れなくて
不安でいっぱいだったのですが
解説を読んでやる気も出てきました!
アセンブラ言語の仕様を再度確認し
更に学習を進めていこうと思います!
非常に分かりやすく丁寧なご解説
本当にありがとうございました!!!
ご回答下さりありがとうございます!
ようやく理解が出来ました!!!
わからなくて昨日本当に眠れなくて
不安でいっぱいだったのですが
解説を読んでやる気も出てきました!
アセンブラ言語の仕様を再度確認し
更に学習を進めていこうと思います!
非常に分かりやすく丁寧なご解説
本当にありがとうございました!!!
2021.05.18 21:02
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告