One question about tracing an x86 assembly program that uses some data segment and modifies some bytes, for instance like Exercise #2 in Sample Homework Assignment #2, but with x86 instructions that we have learned about throughout the semester (movsx/movzx, jump and branch instructions, shifts, etc.)
One question about overflow, which will come in the form of an assembly program with movsx/movzx, jo/jno, jc/jnc instructions, that will print different output based on whether signed/unsigned overflow occurs or not.
One question about a given x86 program with functions and loops, where you have to answer some basic questions about what the program does or how it operates. For instance, a (pretty simple) sample question would be for this program:
...
mov ebx, 0
here:
push dword 12
push edx
call g
add esp, 8
add ebx, eax
cmp ebx, 10
jne here
...
g:
push ebp
mov ebp, esp
sub esp, 4
mov eax, [ebp+8]
mov dword [eax], 10
mov eax, 2
mov esp, ebp
pop ebp
retwith questions such as: “how many times is function g called?”, “does function g defines local variables?”, “does function g ever (attempt to) modify memory besides the stack?”.