Final answer:
To find the hexadecimal address of questionAddr, one adds the sizes of variables declared before it in the data segment starting at 0x3600. After accounting for the bytes used by printString, someBytes, and moreBytes, the address of questionAddr is calculated to be 0x364B.
Step-by-step explanation:
The question asks for the hexadecimal address of the identifier questionAddr within a data segment that starts at memory address 0x3600. To calculate the address of questionAddr, we must determine the size of the variables declared before it and add that to the starting address. Here is how the memory is allocated for each variable:
printString: The BYTE declaration for the string "Do not add decimal to hex", followed by a null terminator, uses 28 bytes (26 characters + 2 for the double quote and null terminator).
someBytes: The WORD declaration with 19 DUP(0) indicates that space for 19 words is reserved, and since a word is 2 bytes, this gives us 38 bytes.
moreBytes: The BYTE declaration specifies 9 individual bytes.
Adding it all up:
Start Address: 0x3600
+ printString: 28 bytes
+ someBytes: 38 bytes
+ moreBytes: 9 bytes
= Total: 75 bytes
To get the address of questionAddr, convert the total number of bytes to hexadecimal and add it to the start address:
0x3600 + 0x004B (75 in hexadecimal) = 0x364B
Therefore, the hexadecimal address of questionAddr is 0x364B.