平成27年春期午後問12

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
とろろさん  
(No.1)
https://www.fe-siken.com/kakomon/27_haru/pm12.html

プログラム2のCONTについて質問したく思います。
SLL命令で、GR2をずらして1のあるビットを探して、乗算を加算で表現しているというのを、既に掲示板にあったもので読みました。CASLではよくあるので、その仕組みは理解できたのですが、このプログラムではJUMPでLPに飛んだ後、JZEは1のあるビットの時でも抜けるのはわかるのですが、JPLは抜けずにまた飛んでしまうと思います。
例えばGR2が、0000 0000 0000 1010で、12回シフト後に、JPLにたどりついても、シフト後の値は1010 0000 0000 0000となっているので、プラスの値という判定で、またCONTに飛んでしまうと思います。
勘違いしている場所があれば教えて頂けると幸いです。
拙い説明、理解の乏しく、申し訳ございませんが宜しくお願い致します。
2021.08.12 13:42
関数従属さん 
FE ゴールドマイスター
(No.2)
SLL GR2,1の命令の時に、SFのフラグレジスタが設定されるのですが、
SFは「演算結果の符号が負(ビット番号15が1)の時1、それ以外のときに0になる」仕様であり、
12回シフトして1010 0000 0000 0000となった際は、ビット番号15が1の為、SFが1になります。
(2の補数での負数の扱い)

JPLはSF,ZFのフラグレジスタが両方とも0の時にジャンプする仕様の為、
1010 0000 0000 0000の時はJPL CONTの命令の際、CONTにはジャンプしないという事になります。
2021.08.12 23:06
とろろさん  
(No.3)
お早い返信ありがとうございます!
フラグレジスタは軽く覚えていたのですが、ほとんど問題と絡むことがなく忘れていました!
理解することができました。ありがとうございました。
2021.08.14 12:31

返信投稿用フォーム

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

その他のスレッド


Pagetop