Por que o NASM não tem problemas com mnemônicos de instruções válidos como nomes de símbolos em operandos?

Eu escrevi o seguinte programa simples, mas o nasm se recusa a compilá-lo.

section .text
    global _start

_start:
    mov rax, 0x01 
    mov rdi, 0x01
    mov rsi, str
    mov rdx, 0x03
    syscall

    mov rax, 60
    syscall

segment .data
    str db 'Some string'


nasm -f elf64 main.asm
main.asm:15: error: comma, colon, decorator or end of line expected after operand

Como eu li nesteresponda isto é porquestr é uma instrução mnemônica. Então eu adicionei dois pontos parastr e agora compila bem. Mas e a linha

mov rsi, str

str é uma instrução mnemônica aqui, mas ainda compila bem. Por quê?

questionAnswers(1)

yourAnswerToTheQuestion