Es muy correcto. Sobre si hay una forma más rápida... mejor hacer pruebas. Este que sigue es mi método favorito, aunque debes tener en cuenta el "endianness" de tu procesador:
Código:
//Para little-endian (eg: X86):
#define A(n) ((unsigned char *)&cpu.AF)[1] = n;
#define F(n) ((unsigned char *)&cpu.AF)[0] = n;
//Para big-endian (eg: Motorola):
#define A(n) ((unsigned char *)&cpu.AF)[0] = n;
#define F(n) ((unsigned char *)&cpu.AF)[1] = n;