I've programmed a bytecode virtual machine, and while not the same as bare metal assembly, it made it easier for me make sense of assembly (while also greatly benefiting from learning to code the virtual machine). Crafting Interpreters was the book I followed.