2バイトのシフト

解決


anubi  2006-07-19 11:15:16  No: 62540  IP: 192.*.*.*

初めて、投稿させていただきます。

アセンブラでの、
MOV AL,01
SHL AX,5
のような、動きをC++で確認したいのですが、

Byte AH;(あるいはchar AH;)
Byte AL;

AH = 0x00;
AL = 0x01;
ここで、AH、ALを2バイトとしてシフト(<<)することはできないでしょうか?

インラインアセンブラ_asmを使った方が早いのかもしれませんが、
使ったことが無いもので、できればCでやりたいのですが。

よろしく、お願いいたします。

編集 削除
通りすがり  2006-07-19 12:08:38  No: 62541  IP: 192.*.*.*

union REG{
  WORD AX;
  struct {
    BYTE AL,AH;
  };
};
REG reg = {0};
reg.AH = 0x00;
reg.AL = 0x01;
reg.AX <<= 8; // 8bit左シフト

構造体名なしのstructはVC以外では多分通らないので、他の環境でも使うなら適当な名前付けてください…
#昔はdos.hとかにレジスタの共用体定義されていたけれどVCにはないのか…

編集 削除
anubi  2006-07-19 14:02:58  No: 62542  IP: 192.*.*.*

通りすがりさま

早々に、ありがとうございました。

こう言う方法が有るんですね。
structでは、無理だと思っていたんですが、
とても勉強になりました。

編集 削除