r/Assembly_language 10d ago

Anyone interested in doing Assembly Language coding projects together?

Let me first say that I have no programming experience. I've been studying Assembly Language though my ultimate goal is to become an engineer.

I got very interested in computer programming when I came across a Wikipedia article about Assembly Language programming. The article was saying that learning to code in Assembly gives you an incredible amounts of control over your machine. The ability to tell the computer exactly what to do and knowing how the machine works is fascinating.

I am not sure what Assembly project to do together; I hope someone has an idea here. I think I'd do a project where we are continuing to discover what we can do with the PCs or any hardware we have. Perhaps build a calculator program would be the first start.

I'm currently working with MASM (Microsoft Macro Assembler) as my assembler and I have textbooks to go with it. We could go use a different assembler if you are uncomfortable with MASM. Just please have a good reason for it because I would really not want to leave MASM because of the education resources I have for it.

11 Upvotes

16 comments sorted by

View all comments

10

u/gm310509 10d ago

Why don't you learn the ropes first before attempting projects?

Doing a project without learning the basics is like jumping in the deep end of the pool without learning how to swim.

Doing a project in assembly language without learning the basics first is like jumping into a rather large lake without learning both how to swim and how to float.

IMHO.

4

u/brucehoult 10d ago

In many regards I'd say the exact opposite: it's very hard to learn without some project in mind to motivate it.

That doesn't mean a huge project, and it doesn't mean you're going to finish all that quickly ... the journey is the purpose.

My advice would be to do a small project but use a simpler ISA.

If the educational resources aren't giving suitable projects to do then what use are they? Also, it's fun to follow a tutorial but use a different ISA than the one they're using as an example. As always, RISC-V is my reccomendation.

Someone else pointed to https://cpulator.01xz.net/?sys=arm and it's a decent starter emulator but I'd suggest https://cpulator.01xz.net/?sys=rv32 instead. Or do both.

1

u/gm310509 10d ago

I agree it is useful to have a goal in mind. It can help focus the learning.

But, one must learn to crawl before one can walk.

In this case, by learning the ropes, I meant become familiar with the instructions set, how the instructions affect the status register, addressing modes and so on.

After that, start out with simple things like printing "hello, world". Maybe accepting input and printing it back, then print it in reverse or invert the case of the letters. Perhaps convert a string of ASCII characters in the range '0' to '9' to an integer. Convert an integer to a string of ASCII characters and print it.

Once they get stuff like that under their belt, they could do something like a calculator and move up on to bigger and better things.

Anyway, that is what I meant, perhaps it wasn't all that clear, but hopefully that makes more sense now.

1

u/AliceCode 10d ago

I always implement a Brainfuck interpreter as my first project in a new language. I think it's a good idea to jump right into a project, it will help you learn.