Question:
Assembler/Assembly Language?
2009-04-19 22:53:43 UTC
Alright, Assembly is a ***** to learn, and everyone is yelling at me to learn C++ before even looking at ASM, but I must say, it's my life dream to master ASM as a first language. I do NOT have the time to start with any other language. I tried learning about Hex, Binary, decimals, Memory, ...etc, but I don't understand a word of what guides and books say about it. When I tried to learn assembly, I thought I would cry because I didn't understand a single word from a step-by-step for complete beginner's book. I need advice because I have 5 months to learn ASM and be able to code with it pretty fluently. I need to know what to do or if anyone here could teach me (prob. very unlikely).

Thank you in advance for all comments.
Four answers:
balk
2009-04-20 07:39:29 UTC
Well, if you're having problems with the hexidecimal and binary number systems, then you can forget about learning AL in 5 months.



If this was over 20 years ago, plus you already knew how to program well in BASIC, plus you were learning AL on a simple CPU like a 6502, and you had a good book, then yeah, you could learn to program decently with AL in a few months like I did. (I learned 6502 AL when I was 14.) Of course, you would also have to learn how to access hardware and software to do things like print stuff to the screen and access storage devices, which takes additional time.



Anyway, It is better to learn a high level language first because it will be easier to understand the basics of programming; You need to know stuff like creating procedures, data allocation, code looping, and conditional instructions.



If you still wish to go onwards with AL, then I suggest this:



1) State the CPU/microcontroller and operating system (if present) that you'll be programming and ask for advice from someone who has programmed them. He/she will recommend the books that you should buy and suggest how you should proceed.

Don't learn from idiots -that's one of the problems in programming that has been going on for at least 15 years.

For a long time now, people have been learning programming from MORONS who can't even make an efficient "Hello World" program to save their lives. That's why utter garbage like Object Oriented Programming is everywhere.



2) Before learning about AL, learn about the basic workings of the computer first; Stuff like of how a CPU works, memory, the binary and hexidecimal number systems, and a basic overview of the inner workings of a computer system. In other words, learn about what a computer is before you begin programming it. When you program with AL you are essentially directly programming the CPU, unlike a high level language like C/C++ where the source code gets compiled down to the CPU's machine code.



3) Find a programming forum where there are AL programmers present who can help you. Don't take too much advantage of their kindness because AL programmers expect you to do almost all of work on your own.



4) If you're going to be programming on an operating system like Linux or Windows, then you are going to add much more time to that 5 month time limit. Learning to program Windows decently takes more time than learning a new computer language (if you already are fluent with 1 programming language). Unfortunately, learning a computer language and learning to program efficiently with a GUI operating system are two different and time consuming things.
yufongwe
2009-04-20 00:16:23 UTC
I don't have much to say about assembly, except that I found this book useful:



http://savannah.inetbridge.net/pgubook/ProgrammingGroundUp-1-0-booksize.pdf



...which was supposedly written for people precisely in your situation. (Assuming they have Linux and a minimal amount of comfort on a Unix command line, which to the uninitiated, is less intimidating that it sounds.)



If that doesn't do it for you, this might:

http://webster.cs.ucr.edu/AsmTools/HLA/index.html



I can't say whether I think it's a good idea to learn ASM as a first language. Probably better to learn it before C++, because then when you learn C++, you can focus on the language itself rather than, say, struggling over what a pointer is. But I think C++ is bar none, the worst language for anyone to start with.



Since ASM is really about the nuts and bolts of your computer, though, it might be smart to just read about general computer architecture before trying to program in it. I liked HLA's introduction (which is in the second volume of the "book" hosted on the second link above). But there are plenty of other resources.
Tony RB
2009-04-19 23:49:08 UTC
Why do you need to learn an assembly language in 5 months? I have an electrical engineering degree and I tell you there is no way a beginner can teach himself assembler in only 5 months and be proficient if he has had no other programming experience. Do you have 8 hours a day for the next 5 months?



That is because every computer system that supports assembler programming uses a higher level language to invoke the assembler programming environment and after compilation invoke the assembled program.



Furthermore, you must have the hardware to work with, so that as you learn the commands and data structures, you can experiment and see what works and what does not work. Assembler simply should not be the first computer language you learn.



My experience - I have to print out code listings so I can scribble notes and draw lines from one section to another to match up sections that seem to have problems. I also write down lines of code to add as I add features to the programs or find the mistakes and correct them - I can't keep all that information in my head, especially if the phone rings. Writing software is a lot like climbing scaffolding on the side of the building, I have to "climb the structure" of the code mentally before I can become productive, and every interruption makes me leave that structure. Grrrrr. This is for any software project, any language.



You haven't told us what processor you want to learn assembler on.



Assembly programming is for people who word directly with hardware, like for graphics cards, and chipsets - if you are talking about PCs or Macs or notebooks or netbooks.



Trying to learn assembler for the Intel x86 processor is a massive undertaking, it's too much to learn in only 5 months.



There are processors that are much easier to use for learning assembly language.



One magazine that has articles related to assembly programming is "Nuts and Volts", where people who have done a little project havemade an article out of their project. Fun to read, but trying to understand programming by looking at a listing of code just does not work; I have to reverse-engineer the code to fully understand what the heck is going on.



You really should learn a high-level program first, then add assembler to that high-level program.



From an educator:

http://www.phanderson.com/stamp/stamp-pic.html



I suggest you learn about the BASIC Stamp - it's a good little learning environment and useful programs will be small and quick to program.

http://en.wikipedia.org/wiki/Basic_Stamp



The Basic Stamp is manufactured by Parallax:

http://www.parallax.com/



Click on "Basic Stamp Activity Kit" for more information. You might be able to get one through a Radio Shack store.



Click on the tab (in the web page) "Education"

http://www.parallax.com/Education/EducationHome/tabid/463/Default.aspx



Parallax also has forums where you can ask questions of people who can actually provide you with answers:

http://forums.parallax.com/forums/

.
?
2009-04-19 23:31:32 UTC
Well it sure won't be easy...In order to be proficient in ASM, you should really have a thorough understanding about the fundamentals of computer science...Or you'll struggle big time. Not only that, but there are different versions of Assembly....x86...MIPS...etc....



I'm sorry, but your friends we're right...It would probably be faster if you spent 3 months learning C and concepts of Comp Sci with 2 months of Assembly, than 5 months of Assembly alone.


This content was originally posted on Y! Answers, a Q&A website that shut down in 2021.
Loading...