レジスタでの作業をシミュレートしたいので、Register クラスを次のように宣言します。
class Register{
uint8_t reg_ax[2];
Register(){
reg_ax[0] = reg_ax[1] = 0;
}
uint16_t &ax(){ return (uint16_t &)reg_ax[0]; }
};
ax
これで、次のように (16 ビット)の値を印刷および編集できます。
Register regs;
cout << regs.ax() << endl;
regs.ax() = 5;
cout << regs.ax() << endl;
それはうまくいきますが、印刷して編集したい場合、al
およびah
下位部分と上位部分 (8 ビット) はax
どうすればよいですか?! 私はこれを試しましたが、うまくいきません!
uint8_t &al(){ return reg_ax[1]; }
uint8_t &ah(){ return reg_ax[0]; }
これを行うと、出力は表示されません。
cout << regs.al() << endl;
助けはありますか?