Я не думаю, что есть способ «наилучшей практики» для этого, но один из подходов, который вы можете использовать, который может вас меньше раздражать, - это использование объединения для наложения 8- и 16-битных частей:*
В качестве альтернативы, если вы явно нацеливаетесь только на 8086, вы можете иметь одну структуру, содержащую все 16-битные регистры, и одну, содержащую все байтовые части.например,
struct RegByte {
unsigned char al, ah, bl, bh, cl, ch, dl, dh;
};
struct RegWord {
unsigned short ax, bx, cx, dx;
/* nothing stopping you from continuing with si, di, etc even though
* they don't have addressable high and low bytes */
};
union Reg {
struct RegWord word;
struct RegByte byte;
};