HOME»基本情報技術者試験掲示板»平成27年春期午後問12
投稿する

平成27年春期午後問12 [3536]

 とろろさん(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
関数従属さん(No.2) 
FE ゴールドマイスター
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日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop