Not sure your time scale or starting point, but just to throw something out there: I recommend learning computer architecture first. https://archive.org/details/ComputerArchitectureAQuantitativ... I had a class in school where we had to build a simple computer on an FPGA and wrote a gcc compatible assembler for it. Passing was being able to run simple C programs on it. I felt like that project was the best experience for really understanding assembly from the bottom and from the top.
Not sure your time scale or starting point, but just to throw something out there: I recommend learning computer architecture first. https://archive.org/details/ComputerArchitectureAQuantitativ... I had a class in school where we had to build a simple computer on an FPGA and wrote a gcc compatible assembler for it. Passing was being able to run simple C programs on it. I felt like that project was the best experience for really understanding assembly from the bottom and from the top.
An unrelated resource I thought looked good was this: https://github.com/FFmpeg/asm-lessons