The OP seems to have left the forum, but WTH, I might as well add my two cents, too.
CrossJava wrote:
I'm 13 and already mastered most of the other languages, now it's time for a challenge.
As has already been mentioned, there are a
lot of programming languages out there, and some of them are very different from the run-of-the-mill Algol derivative. However, since I am mainly mentioning this to suggest you watch at least a few of the
Abelson-Sussman lectures (which cover Scheme, a language in the Lisp family) as an alternative view of programming. I'd also check out
Smalltalk and
Forth as ones which work quite differently from conventional languages, but I will leave it to others to offer good resources on those.
CrossJava wrote:
I finished Tutorialspoint's walkthrough on it, but now I need another place to learn from that's free and high quality.
'Free' and 'high quality' tend to be antagonistic goals, but I probably don't need to tell you that. This isn't to say that there aren't any such resources, but a lot of the better ones (and many of the worse ones) will cost money.
That having been said, if you have access to a public library, there are some excellent books such as Duntemann's
Assembly Language Step by Step, which has the advantage of covering NASM under Linux the same as the tutorial you've gone through already. I know that libraries aren't the easiest things to access right now due to COVID, but if you can get a copy of this from one it would be worth the effort. Otherwise, the Kindle may not be free but it isn't too expensive if you can scrape the money together or convince a family member to get it for you.
I would also suggest considering a different assembly language, either emulated or on a real single-board computer such as a
Raspberry Pi. The x86 instruction set is frankly a mess, compared to something such as ARM or MIPS, and if nothing else looking at other machine types will give you some idea of what is general to most assembly languages, and what is specific to x86 PCs.
For MIPS, there aren't that many real machines which you could use, but there are a few such as the Onion Omega2, and there are many emulators such as
SPIM which are usually free. Alternatively, setting up a cross-assembler and a
QEMU virtual MIPS Linux image shouldn't prove too difficult. I'd have to look around for suitable tutorials and videos, but I know that ones like
this one are around.
While not free, an ARM SBC such as the Raspberry Pi isn't overly expensive (under $80 US for usable system), so it might prove to be a good investment, and not just for programming. I don't know if this is something you could ask family to help with, but I trust that you could convince them that it would be educational (which probably is the case anyway). There are tons of assembly programming tutorials and videos covering the Pi, and while it is far from the best SBC around, it is far and away the most accessible for most people.
Alternatively, a neo-retro platform such as the
Commander X16 is another choice, which is convenient in that there is a
free emulator and multiple assemblers such as
cc65 ready to be used with it. There are several free videos on Youtube covering 6502 assembly for the Commander X16, such as
this one.
And there are always the
OpenCourseware classes on the theory of instruction sets and such, but that may be jumping the gun a teensy bit.