bloggerads

2011年7月20日 星期三

C 結構位域用法

常看到一個位址中的記憶體內有不同的位元,他代表不同的旗標及暫存器,最常見的手法就是使用"結構"的"位域"。

+   typedef unsigned char BYTE;
+   
+   typedef union
+   {
+       BYTE all;
+       struct 
+       {
+           BYTE al:4;   // 將 al 設定為8bit
+           BYTE ah:4;  // 將 ah 設定為8bit
+       }part;  
+   }REGISTER8;
+   
+   REGISTER8 ax;
+   ax.all=0xCA;
+   printf("AH=%X, AL=%X\n",ax.part.ah, ax.part.al);
+
  
從原本變數的最小單位short int(2bytes),拆成上下兩個8bits的變數,這樣就符合PC裡AX暫存器分為上8bits(AH)及下8bits(AL)兩個暫存器了