NASM Coding: Trace Tables

Here is the trace table for the program on slide 39:

Instruction
stdin
message
msg_len
rax
rbx
rdi
rsi
rdx
(rbx != 0)
stdout
Exit Code Notes
message db "6-7", 10
"6-7\n"
msg_len equ $ - message
"6-7\n"
4d
mov rbx, 5
"6-7\n"
4d
5d
dec rbx
"6-7\n"
4d
4d
mov rax, 1
"6-7\n"
4d
1d
4d
mov rdi, 1
"6-7\n"
4d
1d
4d
1d
mov rsi, message
"6-7\n"
4d
1d
4d
1d
"6-7\n"
mov rdx, msg_len
"6-7\n"
4d
1d
4d
1d
"6-7\n"
4d
syscall
"6-7\n"
4d
4d
4d
1d
"6-7\n"
4d
"6-7\n"
rax = write (stdout, "6-7\n", 4);
cmp rbx, 0
"6-7\n"
4d
4d
4d
1d
"6-7\n"
4d
True
jne loop_start
"6-7\n"
4d
4d
4d
1d
"6-7\n"
4d
True Go to
loop_start
dec rbx
"6-7\n"
4d
4d
3d
1d
"6-7\n"
4d
mov rax, 1
"6-7\n"
4d
1d
3d
1d
"6-7\n"
4d
mov rdi, 1
"6-7\n"
4d
1d
3d
1d
"6-7\n"
4d
mov rsi, message
"6-7\n"
4d
1d
3d
1d
"6-7\n"
4d
mov rdx, msg_len
"6-7\n"
4d
1d
3d
1d
"6-7\n"
4d
syscall
"6-7\n"
4d
4d
3d
1d
"6-7\n"
4d
"6-7\n"
rax = write (stdout, "6-7\n", 4);
cmp rbx, 0
"6-7\n"
4d
4d
3d
1d
"6-7\n"
4d
True
jne loop_start
"6-7\n"
4d
4d
3d
1d
"6-7\n"
4d
True Go to
loop_start
dec rbx
"6-7\n"
4d
4d
2d
1d
"6-7\n"
4d
mov rax, 1
"6-7\n"
4d
1d
2d
1d
"6-7\n"
4d
mov rdi, 1
"6-7\n"
4d
1d
2d
1d
"6-7\n"
4d
mov rsi, message
"6-7\n"
4d
1d
2d
1d
"6-7\n"
4d
mov rdx, msg_len
"6-7\n"
4d
1d
2d
1d
"6-7\n"
4d
syscall
"6-7\n"
4d
4d
2d
1d
"6-7\n"
4d
"6-7\n"
rax = write (stdout, "6-7\n", 4);
cmp rbx, 0
"6-7\n"
4d
4d
2d
1d
"6-7\n"
4d
True
jne loop_start
"6-7\n"
4d
4d
2d
1d
"6-7\n"
4d
True Go to
loop_start
dec rbx
"6-7\n"
4d
4d
1d
1d
"6-7\n"
4d
mov rax, 1
"6-7\n"
4d
1d
1d
1d
"6-7\n"
4d
mov rdi, 1
"6-7\n"
4d
1d
1d
1d
"6-7\n"
4d
mov rsi, message
"6-7\n"
4d
1d
1d
1d
"6-7\n"
4d
mov rdx, msg_len
"6-7\n"
4d
1d
1d
1d
"6-7\n"
4d
syscall
"6-7\n"
4d
4d
1d
1d
"6-7\n"
4d
"6-7\n"
rax = write (stdout, "6-7\n", 4);
cmp rbx, 0
"6-7\n"
4d
4d
1d
1d
"6-7\n"
4d
True
jne loop_start
"6-7\n"
4d
4d
1d
1d
"6-7\n"
4d
True Go to
loop_start
dec rbx
"6-7\n"
4d
4d
0
1d
"6-7\n"
4d
mov rax, 1
"6-7\n"
4d
1d
0
1d
"6-7\n"
4d
mov rdi, 1
"6-7\n"
4d
1d
0
1d
"6-7\n"
4d
mov rsi, message
"6-7\n"
4d
1d
0
1d
"6-7\n"
4d
mov rdx, msg_len
"6-7\n"
4d
1d
0
1d
"6-7\n"
4d
syscall
"6-7\n"
4d
4d
0
1d
"6-7\n"
4d
"6-7\n"
rax = write (stdout, "6-7\n", 4);
cmp rbx, 0
"6-7\n"
4d
4d
0
1d
"6-7\n"
4d
False
jne loop_start
"6-7\n"
4d
4d
0
1d
"6-7\n"
4d
False Go to
mov rax, 60
mov rax, 60
"6-7\n"
4d
60d
0
1d
"6-7\n"
4d
mov rdi, 0
"6-7\n"
4d
60d
0
0
"6-7\n"
4d
syscall
"6-7\n"
4d
60d
0
0
"6-7\n"
4d
0
exit(0);