Jump to content

how do you start learning assembly?

- - - - -

  • Please log in to reply
42 replies to this topic

#1
Guest_x42_*

Guest_x42_*
  • Guests
I really want to know assembly, but before I learn it, I want to know everything about c++ (this way I know that I am ready), but the problem is that no matter what I look up, and no matter what library I open, I can't seem to figure out the low level stuff, no one seems to know anything, and I don't know what to do!, can someone please tell me how you learned all about one of the high level languages? (and no, I don't have time to wait for them to teach me it in school, I want to learn it as soon as possible), I just want to know EVERYTHING about computers, I already know circuitry, now I just want to be able to make a robot that can explore the physical world, and connect to a computer and go into the computer

#2
dargueta

dargueta

    Writes binary right handed and hex left handed

  • Moderators
  • 4,705 posts
  • Programming Language:C, Java, C++, PHP, Python, Perl, Assembly, Bash, Others
  • Learning:JavaScript
Um...A little ambitious there. I've been programming for seven or eight years now, and I still don't know everything. You can't just rush into all this. I suggest you sit down with a good book (Teach Yourself C++ in 21 Days comes to mind) and start from there.

And not to rain on your parade...as far as a programmable robot that can be connected to a computer, you're going to need to know:
- Device drivers and how to write them for the operating system you choose. Note: You might be able to get away with this using Java, but it'll be hard no matter what language you choose.
- Machine learning algorithms. Requires good grasp of:
--> pattern recognition algorithms
--> Possibly multivariable calculus, and/or linear algebra, depending on the class of algorithm you choose
--> Statistics
--> Probability theory
--> Searching & sorting algorithms
- Drivers for the appendages or whatever that you're going to use. Should you want to include vision, you're going to make life hell for yourself, as that'd take much more complicated algorithms that even PhDs spend their lives figuring out.
- Enough electrical engineering--BSEE-grade at least--to figure out how to design the thing
- Enough CS to figure out how to program the thing and cram all the code into as small a space as possible
- Assembly language for writing the basic programs for the robot's internal control. Probably ARM, but it depends on your design choices.
- MONEY

I'll be happy to help. Just calm down, okay? :) Start with a high-level language like Java, then work your way down to C/C++, and then get to assembly language. If you jump straight into assembly language your head'll explode.

Edited by Roger, 11 August 2010 - 03:49 PM.

sudo rm -rf /

#3
WingedPanther

WingedPanther

    A spammer's worst nightmare

  • Moderators
  • 16,822 posts
  • Location:Upstate, South Carolina
  • Programming Language:C, C++, PL/SQL, Delphi/Object Pascal, Pascal, Transact-SQL, Others
  • Learning:Java, C#, PHP, JavaScript, Lisp, Fortran, Haskell, Others
As a side note, I haven't gotten around to learning assembly (though I can usually read it) simply because I want to get things done. I'm not saying Assembly isn't a good language to know, just that I can get programs doing what I want much faster without it.
Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

#4
dargueta

dargueta

    Writes binary right handed and hex left handed

  • Moderators
  • 4,705 posts
  • Programming Language:C, Java, C++, PHP, Python, Perl, Assembly, Bash, Others
  • Learning:JavaScript
I largely agree with you, WP. It helps a lot though when doing really low-level stuff like setting up protected mode and interrupt vectors for operating systems, or programming with tight restrictions on space and/or performance.
sudo rm -rf /

#5
Guest_x42_*

Guest_x42_*
  • Guests
uhh.. I am perfectly aware that it won't be easy, and I am upset because it seems as if the entire internet is trying to keep me from finding out sometimes, there is not one tutorial out there that teaches anything that you don't "need" to know, and I know not to jump straight into assembly, I have been trying to figure out c++, but of course no matter how many times I explain that I am curious, the only response I ever get is "and that is why it is not necessary", I feel like I just want to rip that guy's head off!

#6
Guest_x42_*

Guest_x42_*
  • Guests
good for you, I unfortunately don't care!, I didn't teach myself c++ so I could make programs, I taught myself it so I could make my robots compatible with computers, you clearly didn't read all of my description otherwise you would not have put that as an answer, please don't ever answer one of my questions like that again

#7
dargueta

dargueta

    Writes binary right handed and hex left handed

  • Moderators
  • 4,705 posts
  • Programming Language:C, Java, C++, PHP, Python, Perl, Assembly, Bash, Others
  • Learning:JavaScript
I'm being realistic, x42. Building a robot yourself will take all the stuff I mentioned above. Using a commercially available robot with established drivers and APIs is entirely different (i.e. easier). Neither is trivial. Which one are you going for?
sudo rm -rf /

#8
Alexander

Alexander

    It's Science!

  • Moderators
  • 4,118 posts
  • Location:Vancouver, Eh! Cleverness: 200
I agree with dargueta on the matter. If you were proficient in robotic electronics and what they use as interprogrammable PIC microcontrollers it would be varients of BASIC that were preferred by manufacterers and learning facility-based robotic control implementations, not LM86 assembly. If you wish to learn DOS specific assembly on an 8086 (which you're asking us for help on resources for) then you may go ahead, but it will not serve you at all on "programming" another completely obstense chipset.

That is all we are saying. Not to mean in an offensive way, that is not what I intended but you are just going down a long path of something that won't serve purpose of what you're wishing to do.
Be sure to read the updated FAQ! || Health is achieved through the same 10,000 steps.
If a suggested code/method fails, informing us is less important than telling us why or what errors occurred.

#9
artificial

artificial

    Programming God

  • Members
  • PipPipPipPipPipPipPip
  • 624 posts
As you already mentioned, it is better to learn a high-level programming language first. Assembly is actually not a difficult language, but it is kind of strange.
I suggest that you learn C/C++. Once you've done that, you have to read as many books and tutorials on assembly as possible (that's the way I learned it).
There are several good tutorials on the Internet (for example in this community).

Greets,
artificial

#10
Guest_x42_*

Guest_x42_*
  • Guests
I am going for the one where I don't feel like I am building it from a kit, and no robots don't have to be like computers, driver software is not in any way necessary, driver software was made so they could easily add hardware, a robot is just a programmable machine, so if it is programmable, it is a robot, even if it doesn't have drivers

#11
dargueta

dargueta

    Writes binary right handed and hex left handed

  • Moderators
  • 4,705 posts
  • Programming Language:C, Java, C++, PHP, Python, Perl, Assembly, Bash, Others
  • Learning:JavaScript
You need drivers to make it able to communicate with the computer. I thought that was part of what you wanted.
sudo rm -rf /

#12
Guest_x42_*

Guest_x42_*
  • Guests
easier said than done, the people who write the libraries that everyone tells me to try taking apart have actually said:
#ifndef _FEATURES_H
# error "Never use <bits/predefs.h> directly; include <features.h> instead."
#endif

it is like they are intentionally trying to waste my time




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users