Well, there's a lot of separate things you must know a bit about to get started.
For high level languages like C or Pascal, and when doing some higher level stuff like reading/writing files or doing standard input/output with keyboard/screen, I think they are a bit like spoken languages in the sense than you must know the syntax how to write senteces so the compiler won't give errors, and then you must know what words to use to say something (like how to open, read and close a file). For instance in this case there is little difference if you read files in C language on a 386 CPU running DOS or on an ARM CPU running Linux.
If you want to write low level stuff that directly accesses the hardware, then you need to know the hardware platform regardless of the language used. Usually a nice practical example is how to use video bios to change into VGA 320x200 graphics mode, plot a few pixels on screen, wait for user keypress, and change back to VGA text mode and exit program without hanging the PC, not many more than 25 lines even in assembly language.
But assembly language also has a syntax to learn, and in this case you must have a "programmer's model" of the CPU, meaning what are the CPU register names and how you can use them, and what kind of instructions there are available and on what CPU registers they can be used. Higher level languages get compiled into assembly, so even a complex subroutine made in C or Pascal is just a series of small, simple assembly opcodes, so if you reverse-engineer something, it will take time to "see the matrix" what is the big picture the software does. Even if you understand each and every assembly opcode what it does, it is more important to understand why it does the things it does to achieve something.
Well, I still find HelpPC tech reference and PCGPE (PC Game Programmer's Encyclopedia) useful. You can get an old Borland C compiler from Borland Museum for your own use, also some C++ compiler available, and very old Turbo Pascal version which does not support assembler syntax. Also many DOS programming sites on the net, and they even look like old BBS 😀