Question:
Assembly language questions?
?
2014-02-23 10:16:56 UTC
Hello guys and thank you for taking an interest in my questions. I am trying to learn assembly language but when I went to look for a book I kept seeing things like "windows assembly programming", "assembly programming for Linux", "64bit assembly programming", "Intel assembly programming", "ARM assembly programming", "64bit Intel assembly programming" and I just don't know which one to choose. Another question I have is if I need a programming board or can I just learn with an assembler? Can I practice by programming my old pc? Is programming an AVR the same as programming a processor? Sorry for the many questions, I just don't know where to start. Thank you very much in advance :)
Five answers:
ProfGene.Togolot
2014-02-23 11:20:55 UTC
Assembly Language for Intel-Based Computers 3rd Edition Kip R. Irvine. This is a great book that starts out explaining in detail every part of a computer with things like how a bios works. It is dated so you would need to find a used copy and it comes with a CD



I have another form the 80's which is a manual for 80 86 computer Assembly programming that my father bought which also has another manual for the operating system.
amania_r
2014-02-24 01:09:31 UTC
There is no point in learning assembly language for processors like x86. Compilers do a far better job at generating code. A lot of machine instructions are not available to you apart from when writing kernel code because they are privileged instructions.



If however you want to do micro-controller programming e.g. AVR, PIC Arudino etc, then assembler is a valid option (although even these have C compilers available). You'll certainly learn a lot doing assembly programming for a micro-controller because there is no operating system, you have to write all the code yourself.
husoski
2014-02-23 11:25:48 UTC
There is no single "assembly language". Every processor type has a different internal architecture and instruction set. Different operating environments have different tools for converting human readable code ("assembly language") into executable binary code ("machine language").



Pick a processor and an operating environment, then learn the instruction set for that processor, plus how to use the assembler, linker, burner, debugger, whatever for the operating environment. If you want to learn, though, that takes doing...and that takes access to a platform where you can develop, run and debug code for that processor.



It takes a few iterations of this, I think, to "get" what's common to assembly language programming; in spite of differences in CPUs and tools.



AVR is a family of microcontrollers. These ARE processors, designed more for software-control of devices that for building general-purpose computer systems, but the line is a fuzzy one. It is a different architecture and instruction set from the ARM, MIPS, x86, PIC, PowerPC, ...



It's probably easiest to start with assembly for an Intel x86 desktop/notebook running Linux or FreeBSD either directly or using a VM like VirtualBox to run that under WIndows or OSX. The Unix-style assemblers are ugly, especially for x86, but there is a lot of material available in book and on the web.
Techwing
2014-02-23 15:29:32 UTC
Assembly language is hardware-dependent, so you have to learn the assembly language that corresponds to the type of hardware you have on your computer. For standard Windows computers, that means the Intel i86 family of microprocessors.
daSVgrouch
2014-02-23 10:49:41 UTC
since you have a PC, you'll probably want to learn 80x86 family assembly language

I suggest looking at this tutorail and toolset



http://download.cnet.com/NGASM-8086-8088-Assembler/3000-2069_4-10409830.html


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