You have a good idea here but I have something else you might also want to think about. One of these reasons why beginners have problems learning assembly language is because of the lack of a library of commonly used routines for them to use. So I was thinking as part of this project you're working on maybe you can also work on a library of routines for masm and maybe other assemblers also. Something like what Randy had done with the HLA Standard Library. When someone starts learning assembly language it would they would like to start writing simple programs but to read a string from the console they would have to learn about the windows api and how to write procedures in assembly language etc. What I'm basically saying is that a library would allow beginners to get up and running quickly so that they don't have to learn tons of information before they can do anything.

The HLA Standard Library *is* available for MASM users. Most of the routines are callable (there are a few macros in the HLA Standard Library that can't be done well in MASM, so they got dropped, but by and large the bulk of the HLA Standard Library is callable from MASM32 programs).

for details.

While on the subject, I would love to see someone create the appropriate header files for FASM and NASM.
Note being an expert with either of those assemblers, I am not the most appropriate person to do the job. However, someone who knows MASM and one of these other assemblers ought to be able to take the header file I've provided for MASM and do something similar for NASM or FASM. One thing really cool about that project (versus the MASM conversion) is the fact that the HLA Standard Library is ported to Windows *and* Linux. One big advantage to HLA right now is that you can port well-written HLA programs between Windows and Linux with nothing more than a recompile. Were you to port the HLA Standard library to NASM or FASM, the same thing could be done there, too.

Randy Hyde
Posted on 2003-10-23 23:41:05 by rhyde
Originally posted by art_sands

Thnx for your suggestion. I will definitely give some thought to it even though writing a such a library of routines is a monumental task to accomplish.

I can attest to that fact! The HLA Standard Library has in excess of 50,000 lines of code.
That's why I feel that providing header files for other assemblers is a more reasonable option than writing a new library from scratch.

Randy Hyde
Posted on 2003-10-23 23:43:09 by rhyde
Originally posted by art_sands

oh i sure don't mean to convert everything to FASM it is a lot similar. Only a few changes here and there. has a better grammar i suppose. i propose to provide examples in both MASM and FASM in the book if i can. that's it.

If you're going to do an on-line book with multiple authors/contributors, why not break each subject up into two parts - the explaination and then the examples section. Provide (or allow for) multiple example sections where the contributors can supply the examples with multiple assemblers. So you could have MASM, FASM, TASM, NASM, etc., examples at the end of each section. I'm taking a similar approach on a book project I'm working on right now ("The Universal Guide to x86 Assembly Language"). Also, with an on-line electronic text, it's possible to use "conditional text" to let the user custom tailor the presentation for the assembler they're using (though doing this right is a *lot* of work - I'd just recommend the <<examples at the end of the section>> approach). If you use the Wikipedia system to develop the book, this would be perfect for the multiple assemblers approach. One person can write the descriptive material and then multiple people can add the assembler-specific code later.

All it requires is a plan and a style sheet (well, plus a lot of work:-)).
Randy Hyde
Posted on 2003-10-23 23:49:48 by rhyde
Dear Randy

Thanks for a brilliant suggestion Randy. Who else but a brilliant author with such an enormous background would say that. Thats exactly the way it should be. BTW i'd be waiting for your "The Universal Guide to x86 Assembly Language" book to come out. Just hope it would jump over others and AoA by leaps and bounds. Best of lady luck on your project.

And, pssspp, 50,000 lines of code is really heavy. You might have had and may have given others a lot of headaches making and maintaining it.

Regards and God bless,
Posted on 2003-10-24 06:41:32 by art_sands

Dear Randy

Thanks for a brilliant suggestion Randy. Who else but a brilliant author with such an enormous background would say that. Thats exactly the way it should be. BTW i'd be waiting for your "The Universal Guide to x86 Assembly Language" book to come out. Just hope it would jump over others and AoA by leaps and bounds. Best of lady luck on your project.

And, pssspp, 50,000 lines of code is really heavy. You might have had and may have given others a lot of headaches making and maintaining it.

Regards and God bless,

The Universal Guide will be quite a bit different than AoA.
AoA is a tutorial, while UG will be a reference manual. The whole idea behind UG will be "Gee, I know MASM and I've got some code in NASM, how do I translate between the two?" It will simply list all the instructions and directives for about a half-dozen different (and popular) assemblers. So someone who knows one assembler can use the guide to read code written for a different assembler using the "Universal Guide" as an assembly language version of the "Rosetta Stone".

A "parallel" tutorial would be a good thing to have, too. I wish I had the time and expertise to do everything this way. Unfortunately, my time is a bit limited so I have to use it wisely. The "Universal Guide" is my answer to this problem (e.g., when someone complains that "Windows Programming in Assembly" uses HLA rather than MASM, I will be able to refer them to the "Universal Guide..."). Of course, the downside is that I've got to finish my current book project before starting on UG :-( So, it's going to be a while before that one is ready...

Randy Hyde
Posted on 2003-10-24 10:15:29 by rhyde
Dear Randy,

Alright, i got it. How do you manage to strike exactly what's needed. I mean, the right stuff according to the situation. That's an art very few people have. Anyway, I'll definitely be waiting for your book.

Posted on 2003-10-24 10:55:06 by art_sands
art I'll PM you the admin login/password for the wiki
Posted on 2003-10-25 05:48:52 by Hiroshimator
Alright hiroshimator,

you can send me the pwd


Posted on 2003-10-25 06:52:52 by art_sands
Hi all.

Nice to see this and the suport provided here.

Talking about the sections and such things, i think will be usefull have a first look at machine level.

Organization of memory, how the computer work, in some way we only have instructions for change the state of the machine and the state of memory, and show in some way (graphical) what happend there when you jump, call, push/pop, the diferences in the way of call. Separate the instructions for the purpouse (movement, comparation, branch) and indicate in each instruction the basic (the procesor that suport it) and the posile errors in the use.

In the fpu for example develop some pages in how to 'convert' a expresion like a = ln(32*(sqrt(3+pow(36))/6) and things like that.

A chapter in how to develop a structures like if/else//while/loop/do...while/for will be great (for the persons who come from the calleded hll's).

Explain a little of what is harware and what is software and in this way, explain that all in the menory (hard drive) is software and is stored like data including the programs and sure the data, but the 'form' in that each byte is stored there, change the state of the machine and tada you get the programm running (not to short like here ), then explain some like... ok here i go :D.... ammm the computer don think, it only executes, executes what is in ip or eip or rip :D (dunno), the computer in fact at first run, follow a execution way that is called bootstrap, in this moment is time to load the operative system (this is a program too, is not magic), the operative system like other program is developed to solve a problem, the problem that solve he operative system is controll the acces to the ports, memory, other hardware, and manipulate the execution of other programs, comunication between: programs-programs, programs-OS, OS-programms, OS-hardware and some OS like DOS program-harware, instead of program-OS-hardware, ...

I think explain this basic things is good, show that give a manipulation of data need to be correct and the representation of data that we give need to be correct, this is e.g. a executable file have a format (or representation), in fact, the computer now we know that dont think, and the operative system can execute a specific format (or representation) of a program, from the start, we see that the correct manipulation of data is important for represent coherent things in the computer, the computer can not be abstract, the language that you use can not be abstract, they are what they are computer and language, but the people can be abstract and we insert representations or our abstraction there for be executed be the whole PC.

This can be inserted not like masm, nasm, fasm, goasm, spasm, tasm or any other specific...
I think this are basic things that need be understandod from any programmer not only an asm programmer, ok, for the moment dont have much time, i am only watching, but maybe if you whant i will try suport for the moment things like this, and if the organization of time is well done with me I will try to move in a more deept way.

Nice day.
Posted on 2003-10-26 16:31:45 by rea
Thanks hgb for such excellent advice. I'll surely try to do that.

Also, even you can contribute to the book. Don't think that you'll have problems writing stuff. We all did once upon a time.

You'll start improving and will definitely appreciate your growth, which you otherwise wouldn't be able to. So please give that a thought and visit

to pen some stuff for the community.

Posted on 2003-10-28 04:47:36 by art_sands
dear HGB,

Check out the link above. and read the material for some stuff we've managed to write. Hope you like it. And don't forget to make any suggestions.

Posted on 2003-10-28 23:54:44 by art_sands first post here....I'm currently going through a lot of the tutorials and books available on assembly (mental note to thank Randall Hyde at some point) anything that is free - and worth buying (and relevant in this day and age) is going to be valuable to me.

I just have one suggestion, and this may be an opportunity for newbies to contribute if they have the talents, is to contribute graphics to what you are doing. Over the years, i have found it easier to explain concepts to users of synthesisers via pictures what is actually happening. The more the better. Visual experiences stay in the memory easier and it breaks down complexity.

Posted on 2003-10-29 16:34:33 by Cowzar
Hi art_sands I was watching and doing some test I will start with some like 'generalities' or a name like that.

Hi cowzar, nice to met you here ;).

About what say cowzar I was watching: how to add a image? I see that have a like upload for files? how to use and refer the image?, and maybe the images can be added where necesary for clarification about a concept or operation or other. Maybe the apropiate question is what type of formats can be used with wiki?.

And if this is suced, we will need take a like protocol for the presentation of images and not images for example showing a thing of the stack, difer a lot from other that explain other concept.

About how to write, I will start like a conversation with myself, but thinking in a big auditory, that dont know nothing of what I will talk, but have a good open mind ;) to new ideas. I will see how I write in english :D.

Ok, I see how I put a image, but the images can be uploaded?

I see the page that refers elements of style I will take that ;).

And a last thing, I can sign?
Nice day or night.
Posted on 2003-10-29 21:44:19 by rea
Dear Brian and hgb,

It's probably very well known that a picture is worth a thousand words. I should add that Flash movies and other such interactive multimedia content are worth a million. Based on the accessibility and feature-richness of Flash movies, I had initially planned to deliver content using Flash. That would have drastically shortened the learning curve for all asm developers. But there's a couple glitches with these movies. First making them is a pain (and i dunno as flash to do it) and the community cannot contribute. There are other problems like code viewing but that can be solved.

I'd hope you'd understand.

To the ASM Community,

If anybody is interested in delivering content articles from the Wiki web using Flash movies please be in contact at this forum.

Posted on 2003-10-29 23:58:10 by art_sands
dear god no :(

nothing worse than flash crap. documentation is to be READ, to be copied, to be printed (which flash is extremely bad for).

I can understand if you want a tiny example made in flash e.g. stack handling (but even this would be better with a series of still pictures instead of moving flash) but to make whole tutorials like that is just bad.

BTW accessibility of flash? that's a joke right? nothing beats plain-text for both the able and the disabled where reaching for content is concerned.
Posted on 2003-10-30 03:55:41 by Hiroshimator
Oh come on Hiro,

Flash is not that very bad. I understand that it is not exactly appropriate for our content delivery, and that's exactly why I voted against using it for entire tutorials.

There's another point i would like to make about still images and movies. The book will definitely contain still 'printed' images, but to aid learning, color, motion and sound make a far better impression on the mind than simply reading or viewing a series of pictures. You 'feel' stuff happening.

I bet you'll remember a story far better by watching a movie on it rather than simply reading it as a book. As a matter of fact, the more the senses you use to learn, the better you'll remember. Sound, visualization, imagination, reading, writing, confusion, and many other such quantities play very important roles in learning. If you don't believe me, then come here and visit the IITs. You'll definitely go mad.

And as far as the accessibility of plain-text is concerned, i vote against using only plain-text for content delivery. Use multimedia, that's why its there. If we can end up producing more and far better programmers in a relatively short amount of time by using multimedia, then I suggest we should give it a hand.

Additionally, about the normal people. They can easily read and comprehend plain-text. about the disabled. Man plain-text is certainly not accessible. Microsoft, Macromedia, and the entire media world are not mad to promote multimedia rich presentations. Color, makes a deeper impression on the mind than just plain gray text. You have to agree with me on this.

Sorry for such a long post. I apologise in advance if i seem to not agree with you and may be if i have hurt you in any sense.

Posted on 2003-10-30 06:03:41 by art_sands
I'm partially colourblind

certain colours make different impressions on you than they do on me.

Macromedia doesn't give a thing about accessibility, the only thing they care about is $$$. Give me 1 reason why text would display better in flash where not only it can NOT be viewed by a large number of clients but it can also not be manipulated by your standard OS manipulations (copy-paste, scrolling, etc...)

colours are one of the most abused thing in the world and make for the hardest reading experience. (and have nothing to do with flash at all)
see what I mean?

I prefer a good book to a movie since books tend to actually focus on detail, not just what's in the foreground.

and by "the entire media world" I gues you mean those people that think they're cool by making useless intro pages that take a few minutes to load, flash adds with sounds or jumping monkeys? Newsflash for those: the web actually has a purpose, it's NOT a magazine, it flows and it's centered around content, not images.
Posted on 2003-10-30 06:25:30 by Hiroshimator
What you say about colors is alright, but i meant the "use" of colors not the "abuse". See the syntax highlighting of a code editor, for example. use of good colors will certainly enhance your perpesctive of the code. taht's why it's there.

And who said, you can't copy paste cut delete text in flash. get a look at dynamic and input text fields in a swf file. You can do all that using flash components and surprisingly, plain-text files as backend. this however, doesn't mean i'm a wholehearted supporter of flash. i want people to have the best experience learning not just reading. Documentation is not only for reading. It becomes useless if none of it applies to what you want.

Books can be retracked searched and a lot many more things... But authors are known to become over-exhaustive in their coverage, which is why beginners lacking some motivation end up not learning anything at all. u need to maintain the interest of the user in the subject.

A certain amount of accessibility and user-friendliness is what clicks for these corporates. Yes, they are greedy for $$$. even you would want to have your application as accessible as possible, wouldn't you? I don't disagree with you supporting plain-text. I meant "using" supplementary material for the book is essential. A combination of both in appropriate proportions can be striking.

I am not aggressive in saying all this. It was just a good discussion. I hope i conveyed my point across.

Posted on 2003-10-30 07:03:49 by art_sands
I tend to agree with Hiro. I would personally prefer a book that can be referenced easily, for example chm is a good idea, easy to access in my opinion. Flash has never been into my good books, and usually I would prefer to skip the flash animation than to be *impressed* by them.

Also for me, I tend to need some form of reference when coding. So if the reference is made in flash, it would be quite a bad idea, because it's purpose is denied. Of course it is true that some animations would help portray or bring across or help teach some concepts, but of course it would be nice if they are just animated gifs. But I personally feel that the learning curve when coming over from HLL or from no background is not that steep, but of course it differs from person to person. What is important of course would be the motivation to learn and make full use of the knowledge. Better to teach on that is motivated to learn than to teach one that is easily put off...

Just my 2 cents.

Posted on 2003-10-30 07:24:28 by roticv
you should not use syntax colouring unless the user choses so. Me for instance I prefer not to have syntax colouring or at most my comments in green.

if you wish to do syntax colouring use CSS and let the user provide or chose a stylesheet to his/her liking

If someone lacks motivation then they should just quit.

flash will not make your documentation more accurate nor interesting, you'll just try to reinvent the wheel by transferring plain text to flash text
Posted on 2003-10-30 07:27:30 by Hiroshimator