Ohai,
I’m currently trying to implement an 8086 ASM debugger for learning purposes. Until now, I tried to simulate the 8 and 16 bit registers with char arrays but this approach is driving me nuts, when working with AX, AL and AH.
#define setAL() { int i; for (i = 0; i < 8; i++) AL[i] = AX[i]; }
char AX[16] = {0, 1, 1, 1, 1 ,1 ,1, 0, 0, 0, 0, 0, 0, 0, 0, 0};
char AL[8] = {0, 0, 0, 0, 0, 0, 0, 0};
Does anyone has any good idea (or something like ‘best practice’) how to simulate those registers?
I don’t think there’s a ‘best practice’ way of doing this, but one approach you could take that may drive you nuts less is to use a union to overlay the 8 and 16 bit portions:
Alternatively given you’re explicitly targeting just 8086 you could have one structure containing all the 16 bit registers and one containing all of the byte portions. e.g.