Primeiro, os registros não têm endereços. Cada instrução em qualquer linguagem assembly se traduz em um opcode. Opcodes no x86 podem ser um, dois, três ou até mais bytes (em alguns outros processadores eles são "largura fixa"). Normalmente, o opcode identifica a instrução, o modo de endereçamento e os registros envolvidos. O "modo de endereçamento" determina se é necessário mais do que o opcode pela CPU, ou seja, o modo de endereçamento "imediato" significa que há dados adicionais logo após (ou "imediatamente depois") a instrução para essa instrução - modos de endereçamento "absolutos" significa que endereço de memória segue a instrução e é usado por essa instrução.
Você pode descobrir o código de operação de algo como MOV AL,SP
ou similar e pesquisá-lo. x86 tem muitas instruções que operam no ponteiro da pilha.
Mas por favor, por favor saia do Notepad e use um editor hexadecimal. Eu recomendaria HxD, embora existam muitos outros.
E @ David Schwartz está correto. Um desassemblador irá iterar através de um arquivo e converter opcodes novamente em texto legível. O que você quer fazer é totalmente possível.
No entanto, você precisa saber onde no arquivo as instruções começam porque se você começar no endereço errado, alguns dados que devem ser os "operandos" para os opcodes (como instruções que levam um endereço para um operando ou "argumento") pode ser mal interpretado como opcodes. Saber disso requer conhecimento do formato em que o executável está, que é para o Windows o formato "Portable Executable" ou PE (e geralmente é ELF para sistemas Linux). Tenho certeza de que há desmontadores que entendem PE, etc., mas eu não sei de nada.