New to assembly programming, looking for a place to start

Started by Jamey, April 09, 2010, 02:38:12 AM

Previous topic - Next topic

Jamey

Hi all, i'm just taking a dive into assembly language programming and i've found it hard to find a learning resource that suites my needs. I'm an experienced programmer studying Computer Science, so i know my way around a CPU, the maths behind assembly and the key concepts behind high-level language programming. I've even encountered theoretical/pseudo assembly during my studies. My problem is that it seems hard to find a resource which teaches the key practical concepts behind assembly language programming. All the tutorials, help files, manuals, etc. that i've looked at take a huge leap from a Hello world app which outputs to the console or using MessageBoxA to full-blown windows apps, with window classes, etc. There doesn't seem to be much of a middle ground. I was wondering if anyone could suggest a resource which does go through key practical use of assembly?

Sorry i might not be explaining this well but basically; when learning other languages (for example Java) i've gone through the process of: Writing a Hello World app to determine the structure and syntax of the language, then i've gone through writing console programs like; taking basic input and regurgitating it, adding a couple numbers and outputting their total, file i/o, etc. (Using the console to work out a way of doing things in the language) Then somewhere in the future after i'd grasped the basics i've moved on to GUI programming and so-on. It seems like the natural progression for most languages and most books/tutorial series' teach in this way. However as i've said above in all the resources i've looked at things have gone from "hello world" to some really long applications, completely missing console programming out.

Since i've not written a lot more than a few hello-world apps i'm not too fussy about which assembler/syntax is being taught (Though i'm pushing away from masm because i want to move into 64bit programming at some point and ml64 is notably not well liked).

Thanks to anyone who can provide some help or a point in the right direction,
Jamey

dedndave

welcome to the forum, Jamey   :U
in the upper right corner of the forum is a Forum Links and Websites link
there, you will find many helpful tools, including Iczelion's tutorials - a good place to start
another great help is the examples folder in the masm32 package - you can run through them, see what interests you, and have a look at the code
the help and tutorials folders are also great for beginners
installing the masm32 package does not limit you to using masm - the libraries and macros are bound to be helpful with any 32-bit code
once you get your feet wet and want to play with 64-bit code, there is a special sub-forum just for that

hutch--

Jamey,

Thse is some virtue in learning 32 bit assembler, currently its better supported and its still simpler than current 64 bit code. Apart from instructions the 64 bit model has a much more complicate stack design that is no joy to start with where 32 bit code is a lot more straight forward. 64 bit is coming but its like watching paint dry. If you become proficient in flat memory model 32 bit code the shift to the more complicate 64 bit mode will not be as much trouble than trying to learn 64 bit stone cold.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

sinsi

G'day Jamey, welcome.

If you want raw asm then ml64 is for you. There are a few of us that play with it and actually like it.
When you have to think about each parameter and where it goes (instead of using 'invoke') it can open your eyes as to how powerful it is.
One thing, 64-bit OS's are still rare enough and (almost) all 32-bit software will run OK on a 64-bit OS.

It's satisfying but not practical though  :(
Light travels faster than sound, that's why some people seem bright until you hear them.

jj2007

Hi Jamey,
Welcome to the forum. There are some 'middle ground' hints here - look for 'traps'. The examples folder is also an excellent place to learn.

Jamey

Hey all, thanks for all the replies and the welcome =]

@hutch; thanks, yeah there aren't really a lot of resources of 64-bit programmming from scratch so i decided to learn 32-bit and move from there.
@sinsi; oh, alright cool, i wasn't sure of just how well ml64 works, i just know that it didn't have a good reputation. I may take a look into ml64 once i've got the hang of 32-bit

And thanks for the resources people have posted, i'm having a good look at them now =]

Cheers,
Jamey