Hi,
I have zero programming experience but I have a book called "Programming from the Ground Up" from which I'll start learning in the New Year.
My questions are:
1) What are the first things I need to do to get started? I run a ubuntu operating system and the book I mentioned teaches assembly for x86 processors.
2) Why do they say that once you learn assembly you'll never want to use another programming language again?
That's all for now. Thank you!
for good book sales (http://smiles.kolobok.us/light_skin/mosking.gif)
asm rarely first language. all belong from the base knowledge
Quoteasm need two components knowledge: 'algorithmic language' + computer & system architecture. so usually begin from first with high-level language and long going through second.
Luke,
Assembler language is not a good choice as a learners language, it is better suited to experienced programmers who have a good grounding in programming logic, direct memory addressing and computer hardware. As a first language learning a basic compiler is useful, a bit more advanced is to learn a C compiler later and when you have enough experience you an come back to assembler language where you see it will be useful.
Find school schedule for your country (our may be some best private school) - it's show you start.
What your asm book name?
Hi Luke89,
Welcome to the forum, if you want to learn assembly language I hope you've budgeted heavily for headache medication, you're going to need it.
Running Linux you'll find that the choice of assemblers is rather limited, GaS (http://ftp://ftp.gnu.org/gnu/binutils/) (part of binutils), FASM (http://flatassembler.net/) and NASM (http://www.nasm.us/) being the most popular. I think HLA also is available for Linux but I'm not sure, there are a few HLA guys here that can correct me if I'm wrong. You will find there is not much of an assembly community for Linux, the API is interrupt based and a pain in assembly (as far as I've heard). This forum, though open to Linux, is largely aimed at Windows based assembly with a lot of emphasis on the Windows API and user interface. Though some of our members run Linux, as in the real world most are Windows guys.
As Hutch says, assembly is a pretty tough place to start but I had no programming experience at all when I started using it and found it easy enough to grasp the basics, in a lot of ways its better to not have any experience since you come to it without baggage.
Hi Luke,
You can try Jwasm which is compatible with Masm. Here is where you can find the Linux version too :
http://japheth.de/JWasm.html
the first 6 chapters provide some good basic knowledge...
http://www.arl.wustl.edu/~lockwood/class/cs306/books/artofasm/toc.html
chapter 15 - also good
There is no general rule how to learn ASM. In my opinion you should start with BASIC.
With that you can learn building algorithms and basic data organization. After that you could try PASCAL and later C (not C++) to get more involved with data structures, procedures and their parameter interface (but don't use the newest high tech 1GByte super compiler!). Get a debugger, debug your simple programs, meanwhile study x86 programmers reference manuals and lot of other program examples. Get an assembler, TASM, JWASM or MASM are the best choice. Deny any other because they are incompatible and prissy. Once you get some acquaintance with computer structure and CPU registers start trying to (re)write your (debugged) programs with the assembler.
Quote from: TASMUser on December 18, 2011, 08:38:24 PM
There is no general rule how to learn ASM. In my opinion you should start with BASIC.
"Programming from the Ground Up" (http://savannah.nongnu.org/projects/pgubook/)
QuoteThis is an introductory book to programming and computer science using assembly language. It assumes the reader has never programmed before, and introduces the concepts of variables, functions, and flow control. The reason for using assembly language is to get the reader thinking in terms of how the computer actually works underneath. Knowing how the computer works from a "bare-metal" standpoint is often the difference between top-level programmers and programmers who can never quite master their art.
Good intentions. My "programming career" started with GfaBASIC, but soon I added (68000) Assembler for getting more speed. Difficult to say if starting from scratch with Assembler would have been a good idea - Donkey is the only one who has made it that way.
Normally I would offer MasmBasic (http://www.masm32.com/board/index.php?topic=12460) as a solution to combine the two languages, but it would not work on Ubuntu. My advice: Go for JWasm (http://www.japheth.de/JWasm.html), use your book, and start as early as possible to simplify frequent tasks by writing macros.