2バイトのシフト

解決


anubi  2006-07-19 20:15:16  No: 62540

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

アセンブラでの、
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 21:08:38  No: 62541

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 23:02:58  No: 62542

通りすがりさま

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加