hi all. i am currently thinking for learning assembler and compiler language. i just wanted to know how long it will take to learn this language and how difficult is it?

Recommended Answers

All 13 Replies

After never looking at ASM before, I took a one semester course in it. The final project was creating a Space Invaders game in DOS (complete with color and sound), and I think mine came out pretty decent. So, relatively speaking, that's what I was able to accomplish in two months time :)

thats nice to know. i know like the basics of programming( im talking baby steps). my uncle recommended i learn assembler first and then unix because i am chaning from ms windows to linux next year.

I wouldn't recomment assembly as your first language. There's a different dialect for every architecture you program on, and even though the language is relatively small and simple, the problem is putting small and simple pieces together. It's easier to work with a language that doesn't require you to build all of your tools from scratch.

>assembler first and then unix because i am chaning from ms windows to linux next year
I don't entirely agree with that recommendation. When working with Linux as a power user, you'll end up using Perl and shell more than anything. If you work as a developer than expect to use C quite a bit.

My recommendation would be to start with Perl, then go to C. With a year to do it, you shouldn't have any problems getting a little comfortable with both languages. Once you actually switch to Linux, most of your effort will be made in getting comfortable with the interface. However, since Linux comes with full source code, and most of that source code is in C, you'll be better off in the trip to mastery if you can read it.

To summarize, Perl lets you take advantage of Linux's flexibility and C gives you inside knowledge into the operating system. The nice thing is that both Perl and C can be used in both Windows and Linux. The same can't be said about assembly language if Linux is run on a different architecture.

You should learn assembly eventually, mind you, just not as a first (or second) language. ;)

thanks for your recommendations thaey are well appreciated. i told my uncle but he says linux is better and more safer to use. it may not be easy but it is for more professional computer users and takes more thinking and i like challenges.

I wouldn't recomment assembly as your first language. There's a different dialect for every architecture you program on, and even though the language is relatively small and simple, the problem is putting small and simple pieces together. It's easier to work with a language that doesn't require you to build all of your tools from scratch.

>assembler first and then unix because i am chaning from ms windows to linux next year
I don't entirely agree with that recommendation. When working with Linux as a power user, you'll end up using Perl and shell more than anything. If you work as a developer than expect to use C quite a bit.

My recommendation would be to start with Perl, then go to C. With a year to do it, you shouldn't have any problems getting a little comfortable with both languages. Once you actually switch to Linux, most of your effort will be made in getting comfortable with the interface. However, since Linux comes with full source code, and most of that source code is in C, you'll be better off in the trip to mastery if you can read it.

To summarize, Perl lets you take advantage of Linux's flexibility and C gives you inside knowledge into the operating system. The nice thing is that both Perl and C can be used in both Windows and Linux. The same can't be said about assembly language if Linux is run on a different architecture.

You should learn assembly eventually, mind you, just not as a first (or second) language. ;)

My father knows assembler in the past for mainframes but what would be the assemblers for microprocessor and where can i get the assembler mneumonics for the micropreocessors. :p. where would i get the communication regions so i can setup my own programs on microprocessors.

>i told my uncle but he says linux is better and more safer to use.
And Unix is even more stable than Linux, though language portability is a good thing, and whether Linux is better and safer doesn't effect my recommendation at all. The idea is to give you languages that you'll actually use a lot and can also learn both before and after you make the move to Linux.

>but it is for more professional computer users
I'm a professional developer, and a large portion of my work is done on the Windows platform. Though I do write code that needs to be run on both Windows and Unix, so limiting yourself to one platform only hurts you in the end.

>takes more thinking
Not necessarily. It may just seem that way because Linux encourages command line work and the command line appears more complicated.

>i like challenges.
That's the best reason you have to learn a new operating system and the programming languages that go with it. :)

>but what would be the assemblers for microprocessor
You're probably on an x86 architecture, so a quick google search for "x86 assembler" or "x86 assembly tutorial" should give you plenty to get started.

I dont want to sound like an air head but what is an x86 assembler???????/

Assembly language for the Intel x86 processor.

Hello,

I thank GOD that Iowa State didn't make us program entire programs in assembly. That is what a compiler is for. Granted, I would never encourage someone to be ignorant and avoid learning something new, I have to wonder why some places still make programming difficult like that.

I agree with Narue that Assembly is not a good first language idea. I started with Pascal, went to C, then C++, and then got a semester of assembly where we took pre-assembled code and optimized it for more efficient execution.

Perl is a great language to get into. I wish I knew it along with awk and sed. Powerful Unix / Linux utilities. You might also want to learn about expect.

Enjoy coding,

Christian

hi all. i am currently thinking for learning assembler and compiler language. i just wanted to know how long it will take to learn this language and how difficult is it?

There are several ASM tutorials [ x86 ASM Tutorial using A86 for DOS ] and books on the Web that can teach you ASM but it depends on how much effort you put into it that will determine how easy it will be and how long it will take. One of the most commonly referenced ASM learning books is Randall Hyde's "Art of Assembly" AoA website which is available in different formats and uses his HLA (High-Level Assembler) {also available for download at the above site} which is available for both Windows and Linux.

Evenbit.

thats nice to know. i know like the basics of programming( im talking baby steps). my uncle recommended i learn assembler first and then unix because i am chaning from ms windows to linux next year.

Cool! Sounds like you'd fit in nicely with our group Linux, X, ld, gcc, linking, shared libraries and stuff on alt.lang.asm that is learning how to code ASM on Linux using xWindows. You'll find NASM code posted in that thread. Apparently there is a myth going around that ASM coding for Linux (and other *nix) (also xWindows) is harder than for Windows -- but this simply isn't true. It is just that there isn't much in the way of documentation and little in the way of experts to learn from and answer your questions. But the programming itself is really not as complicated as for Windows.

Take a look and join in on the fun! :cheesy:

Evenbit.

How useful is assembly language? There seems to be alot debate about its usefulness these days. I was told it gives you more control over your computer.

assembly is useful, if your program is going to platform specific, like writing your code for intel series microprocessors, or motorola...
yes, it gives your more control, but when you gain more control, you gave up from portability...

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.