平成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を通り抜けられる理由が
さっぱりわかりません…。

自力で解けるようになりたいので
どなたか教えて下さい…!

宜しくお願い致します。
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になります。)

-------------------------------
  
2021.05.18 09:34
フリージアさん  
(No.3)
教えて下さったa様へ

ご回答下さりありがとうございます!
ようやく理解が出来ました!!!

わからなくて昨日本当に眠れなくて
不安でいっぱいだったのですが
解説を読んでやる気も出てきました!

アセンブラ言語の仕様を再度確認し
更に学習を進めていこうと思います!

非常に分かりやすく丁寧なご解説
本当にありがとうございました!!!
2021.05.18 21:02

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop