KATUBLO
2018年11月19日

【アセンブリ言語】シフト命令の処理を解説してみた。

今回なぜ記事を書いたか?

大学で履修した「アセンブリ言語」の中間テスト対策のための内容整理。

 

シフト命令とは?

シフト命令は上で説明したように、ビットをずらす命令である。 左にずらすか、右にずらすか、ずらすデータが符号付き整数か、符号なし整数(もしくは数値以外のデータ)かによって4種類のソフト命令が用意されている。

 

↑以下のサイトより引用

 

算術左シフト命令

SLA:Shift Left Arithmetic

 

特徴

•1番左の符号bitが不変

•ずらして空いた部分には0bitが入る

•OFには押し出されるbitが入る

 

サンプル

 

*算術シフトの場合、最上位bitにつく符号bitはシフトされないので注意。

 

算術右シフト命令

SRA:Shift Right Arithmetic

 

特徴

•1番左の符号bitが不変

ずらして空いた部分には符号bitが入る

•OFには押し出されるbitが入る

 

SRAの最大の特徴は「ずらして空いた部分には符号bitが入る」という点である。

 

 

サンプル

 

*算術シフトの場合、最上位ビットにつく符号ビットは1bit(シフトするbit数分)横にコピーされる形でずれる。

 

論理左シフト命令

SLL:Shift Left Logical

 

特徴

•1番左の符号bitが可変

•ずらして空いた部分には0bitが入る

•OFには押し出されるbitが入る

 

サンプル

 

論理右シフト命令

SLL:Shift Right Logical

 

特徴

•1番左の符号bitが可変

•ずらして空いた部分には0bitが入る

•OFには押し出されるbitが入る

 

サンプル

 

 

算術シフト、論理シフトの特徴をまとめる

 

算術シフト

•符号bitが不変

 

論理シフト

•符号bitが可変

 

 

感想・気づき

次回はシフト演算を実際に使って計算をしてみたいと思う。

最後まで読んで頂き
ありがとうございました。
SNS等でのシェアが頂ければ幸いです。

プロフィール

@KATUO

現在都内私立大学に通う大学3年生。大学では電気電子工学を専攻。大学2年の夏頃に、プログラマーの長期インターン募集の広告が目に止まり、独学でプログラミングの学習をスタート。この時期からプログラミングにどハマりし、現在までに「AIスタートアップ」「Webマーケティング会社」でエンジニアとしての業務に没頭してきた。

過去の投稿