掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.26226

算術右シフトについて。
投稿者---blue(2006/02/20 17:12:42)


授業でアセンブラ言語CASLのエミュレータを作ってます。
そこで符号を除いて有効アドレスで指定したビット数だけ右シフトを行うプログラム(算術右シフト)で分からないところがありました。
最上位ビットが1のとき(-のとき)が適正に行えません。
シフトの結果、空いたビット位置には-の場合には1が入ります。
その1を入れていく作業のところが出来ません。
下のプログラムの☆のところです。
アドバイスよろしくお願いします。

void sra(short g,short x,short ad)
{
  unsigned short xx,y_address,fugo,i;
  xx=hantei_x(x);         //xを判定してxxにgr(x)を設定

  y_address=(xx+ad)%MAX;  //有効アドレスを計算


  if(g==0){
    fugo=gr0&0x8000;  //最上位ビットを判定して+,-を判定

    gr0=gr0&0x7FFF;   //最上位ビットをはずす

    gr0=gr0>>y_address; //有効アドレス分だけ論理右シフト

    if(fugo==0x8000){   //-だった場合の処理

      for(i=0;i++;i<=y_address)//☆シフトで空いた場所に1を入れる

      gr0=gr0|(0x8000>>i);
    }
  }
 ………
}





この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:算術右シフトについて。 26228 iijima 2006/02/20 17:45:09


No.26228

Re:算術右シフトについて。
投稿者---iijima(2006/02/20 17:45:09)


for文の構文について、教科書などで復習してください。


この投稿にコメントする

削除パスワード

No.26229

Re:算術右シフトについて。
投稿者---blue(2006/02/20 18:19:32)


>for文の構文について、教科書などで復習してください。

すいません。
かなり初歩的なミスでしたね。
お恥ずかしい。
そこを直したらちゃんと算術右シフトできました。
これからはこんなことがないように気をつけます。
ありがとうございました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧