Assembly language - you don't need to know how to program in it but you will be a better programmer if you do. The reason for this bold assertion is that only by programming in assembler do you get any feel for how the machine actually works. Yes there is a big difference between the programmer who just writes a high level language function in C#, C++ or Java say from one who knows what happens to make it all work. It is rare that you actually need to write assembler - perhaps a driver or some other systems module - but if you are trying to get back to native code then without doubt it doesn't get any more native than assembler.
So where to begin?
You could try the material that goes with the CS306 Processing Systems and Structures course at Washington University in St Louis. Not only are the lecture notes online but so is the (more or less complete) text of the classic first edition of The Art of Assembly Language Programming. This is the version of the book that explains x86 16-bit assembly language and not the second edition which moved on to using a high level assembler that is more like C - (Review 2nd ed). If you are serious about learning assembler it is the first edition you need.
If you are prepared to work your way through it and take the task seriously you will learn to write assembly language and a lot of very basic ideas about how computers work and some very basic programming techniques.
CS306 Lecture notes
The Art of Assembly Language Programming (course text)
The Art of Assembly Language Programming HTML, PDF and printable PDF
The Art of Assembly Language 2nd Ed (Review)