情報処理 CASL II プログラミング 第12回 シフト演算 大阪府立工業高等

情報処理
CASL II プログラミング
第12回 シフト演算
大阪府立工業高等専門学校
福嶋 茂信
シフト命令
16ビットのデータが入っている
レジスタの内容の全ビットを一斉にずらす命令
左にずらす×2-N倍と同じ
右にずらす×2N倍と同じ
簡単な例(符号なし、4ビットデータ)で考えてみよう:
0
1
0
0
22
1 bit右にずらす
1 bit左にずらす
23
1
2倍になる
0
0
0
0
0
1
0
21
1/2になる
シフト命令のルール
1.
2.
3.
データのなくなったビットには、0か1かが自動的に埋
め込まれる
元のデータの2N(Nは整数)となるように
あふれたビットは、オーバーフローフラグに入る
符号ありのデータかどうかでコマンドが使い分ける
符号あり:SLA, SRA
符号なし:SLL, SRL
SLA, SRA, SLL, SRL命令
SLA
SRA
SLL
SRL
r, adr [,x]
r, adr [,x]
r, adr [,x]
r, adr [,x]
LADコマンドと似た使い方
adrは、adrの示す番地の中身ではなく、アドレス
使い方
SLA GR0,2 ; GR0を左に2ビットシフト
SLL命令
元のGR0
SLA命令で放り出され、OFフラグに入る
0011000101110101
最下位ビット
①SLL GR0,1
0110001011101010
0が入る
②SLL GR0,1
1100010111010100
①のSLL命令で、OFフラグには、0が入る
②のSLL命令で、OFフラグには、0が入る
0が入る
※複数ビット分シフトすると、最後に放り出されたビットの値が入る
SRL命令
元のGR0
SRL命令で放り出され、OFフラグに入る
0011000101110101
0が入る
最下位ビット
①SRL GR0,1
0001100010111010
0が入る
②SRL GR0,1
0000110001011101
①のSRL命令で、OFフラグには、1が入る
②のSRL命令で、OFフラグには、0が入る
※複数ビット分シフトすると、最後に放り出されたビットの値が入る
SLA, SRAコマンド
(SLL, SRLコマンドと、どう違うか)
SLA, SRAコマンドでは、符号ビットは不変
SRA命令の場合、最上位ビットと同じビット
が挿入
SLA命令
元のGR0
SLA命令で放り出され、OFフラグに入る
0011000101110101
変化なし
最下位ビット
①SLA GR0,1
0110001011101010
0が入る
②SLA GR0,1
0100010111010100
0が入る
①のSLA命令で、OFフラグには、0が入る
②のSLA命令で、OFフラグには、1が入る
※複数ビット分シフトすると、最後に放り出されたビットの値が入る
SRA命令(正数のとき)
最上位ビット変化なし
元のGR0
SRA命令で放り出され、OFフラグに入る
0011000101110101
0が入る
①SLA GR0,1
最下位ビット
0001100010111010
0が入る
②SLA GR0,1
0000110001011101
①のSLA命令で、OFフラグには、1が入る
②のSLA命令で、OFフラグには、0が入る
※複数ビット分シフトすると、最後に放り出されたビットの値が入る
SRA命令(負数のとき)
最上位ビット変化なし
元のGR0
SRA命令で放り出され、OFフラグに入る
1011000101110101
1が入る
①SLA GR0,1
最下位ビット
1101100010111010
1が入る
②SLA GR0,1
1110110001011101
①のSLA命令で、OFフラグには、1が入る
②のSLA命令で、OFフラグには、0が入る
※複数ビット分シフトすると、最後に放り出されたビットの値が入る
SLA命令、SRA命令の
オーバーフローの影響について
左シフト
シフトの方向
符号ビットと同じ値を
持つビットの消失か
いいえ
はい
2N倍
無意味
右シフト
1つの値を持つビット
の消失か
いいえ
はい
符号は何か
正
端数切り捨て
2-N倍
負
端数切り上げ
Q12-01
GR0に#4030がはいっている。以下の命
令を実行したあとのGR0の値は何か?
1.
2.
3.
4.
SLL GR0,2
SRL GR0,2
SLA GR0,2
SRA GR0,2
Q12-02
GR0に#E430がはいっている。以下の命
令を実行したあとのGR0の値は何か?
1.
2.
3.
4.
SLL GR0,2
SRL GR0,2
SLA GR0,2
SRA GR0,2
講義資料の置き場など
URL
http://www.geomdog.com/opct
http://www.geomdog.com/opct/InfoP/InfoP.html