Como determino o início e o fim das instruções em um arquivo de objeto?

Então, eu tenho tentado escrever um emulador, ou pelo menos entender como as coisas funcionam. Eu tenho uma compreensão decente da montagem, principalmente z80 e x86, mas nunca entendi como um arquivo de objeto (ou, no meu caso, um arquivo .gb ROM) indica o início e o fim de uma instrução.

Estou tentando analisar o código de operação de cada instrução, mas me ocorreu que não é como se houvesse uma quebra de linha após cada instrução. Então, como isso acontece? Para mim, parece um monte de bytes, sem nenhuma maneira de dizer a diferença entre um código de operação e seus operandos.

questionAnswers(2)

yourAnswerToTheQuestion