It is making me drowsy. And I haven't gotten to the part where I actually write a program, and run it, yet. I'm about 1/2 way thru chap 1 of the 16-bit tutorial.

I did an HLA compile, after reading part of the 32 bit tutorial. But I don't remember which section of the tutorial explained how to do it. And I didn't learn anything from it. I just copied the script and "compiled"? it with hla.exe. I think it wrote "hello world" to the screen -- but I can't find it now.

I want to learn how my processor, memory, and busses work, as well as learn to write useful programs.

Iczelion's tutorial is over my head.

I've spent several days and quite a number of hours searching for a more concise, and clearer, tutorial than randall hyde's difficult to decipher "aoa" tutorials, but haven't found any.

Anyone have any suggestions?
Posted on 2002-01-29 15:11:19 by verb
When I started assembly I started with AoA as well. I simply read as far as the floating point math chapter (skipped the strings at the time) before I even looked at Masm and code.

After that I loaded up Iczelions tuts and I was off.

So my suggestion, stick with it. It all comes toggether at the end :)
Posted on 2002-01-29 16:10:12 by Eóin
After reading your msg E?in, I decided to try and find the "floating point math" chapter among the 29 pdf files that that i extracted from the zip file, for aoa 16, that I downloaded from the webster site. But this isn't going to be so easy. I can't find a table of contents or an index. I can't figure out how to search all the files at once -- acrobat reader will only search one at a time; text search utilities don't find anything at all.

I suppose I could try going to the webster site and try and find on-line html versions of the same files, and then use an on-line search engine to search thru the webster site for "floating point." But this might turn up many more files than just the aoa 16 files.
Posted on 2002-01-29 17:44:14 by verb
If you find the regular tuts too hard, try finding some resources on the old cpu types like Z80 or 6502. They are simple to learn, and once you know them it is an easy step to pick up x86.

Also, i think you don't need to waste(?) your time learning 16 bit asm, it has nasty stuff like memory segmentation to deal with. Instead, you may find it easier to jump into the 32 bit stuff which has a flat memory model.

Of course, i am assuming you have done programming before, at least in something like C. If you haven't you may find it quite hard to learn and understand asm.
Posted on 2002-01-29 17:47:05 by sluggy
Sluggy, I started learning assembly lang for my 6502 Atari, a number of years ago. I remember reading and learning from <b>Atari Roots</b> with no problem. In fact I enjoyed it. But the Atari is in my closet, under a pile of stuff. And I still have stuff on my desk that I need to get rid of, before I add anything else. It would take me ages to dig out the Atari and set it up.

I'm familiar with Atari BASIC, and gwbasic. I also took a course in Algol W, in college, about 30 years ago, and did well on the midterm exam, but didn't go past that. But that start made learning BASIC go much faster. However when learning BASIC on my own, it dawned on me that the teaching method they used to teach Algol was ridiculous. They used long drawn-out explantions for concepts that I could have picked up more easily had they been explained more concisely. Had they explained things more sensibly, I could have learned, in just a week or 2, as much as it took me 1/2 a semester to learn.

I've been trying to learn a bit of Perl recently. Frankly, I'm finding picking up Perl to be very slow going, despite my experience with BASIC. The Algol made the BASIC go faster. But the BASIC is not helping much with the Perl. The meaning of all those extensively used punctuation marks is hard for me to retain. I'll learn what they mean, but when I go back to the tutorial a few days later, I've completely forgotten. The tutorials all seem to encourage the use of very abbreviated numbers of symbols, to represent things, like variables or arrays of variables, just for example. I found BASIC much easier to learn because I could choose nice long names for variables that helped remind me of what kind of information that the variables were storage locations for. Then I didn't have to review everything I learned a few days before, before proceeding to learn just a little bit more. Though if i have less time the next day, I just do reviewing, and don't get to learn anything new.
Posted on 2002-01-29 18:17:44 by verb
E?in, the floating point chapter is chapter 14 --- out of 25 chapters, plus a forward, and 3 appendices.

I remember things if I use them. Thus instead of reading 14 chapters of stuff before writing a program, it would make more sense to me to start writing a program, and reading what i need in the 14 chapters, only as I needed it, to write the program. Then I would remember it. If i read it first, by time it came time to write a program, i will probably have forgotten it; so then I will have to read it again; and the second reading will only go slightly faster than the first. So it will take me about twice as long to learn, than if i simply got into programming right away. However if i try to read Iczelion's tutorial, I can't figure out what it means.

I've found an index for aoa16. However leaving the contents and index out of the zipped download file, counteracts the supposed time-savings advantage that the site manager claims one has, if one downloads the zip file instead of about 30 separate pdf files. In fact, it ends up taking me <b>longer</b> (I know the html tags don't work), because I had to go back to the site a second time, and hunt thru the links a second time, to find the contents files and the index files. Finding these files takes me much longer than downloading them, even with a dial-in connection.
Posted on 2002-01-29 18:53:11 by verb
Before someone claims that things might go faster for me if i didn't waste time complaining about how obtuse the aoa tutorial is, I am going to respond to their claim: putting what the problem is, into words, especially written words, helps me identify, and remember, what the problem is, and encourages productive thought, and writing, geared toward a solution. This makes things it possible for me to learn the aoa tutorial faster, rather than impedes my progress. Further, the illusion, at least, that I am informing people of a problem, and stimulating cogitation in regard to solutions to the problem, and provides me with a feeling that I am doing something worthwhile, even if I am not learning assembly language, and raises my morale, thus reducing somewhat the feeling I might otherwise have, of futility in regard to continuing to try to figure out how to use the syntax of assembly language to get my computer to "do stuff," and in regard to continuing to try to figure out what the various electro-mechanical parts of this thing on my desk do, when "my computer does stuff."
Posted on 2002-01-29 19:13:44 by verb
good luck with the Perl stuff. I hear what you are saying about the brevity of the syntax, it would be a great language to do the obfuscated coding competitions in. To see what i mean, check out the Perl DeCSS decoding algorithm, its a beast.

If you are finding it hard to learn x86 asm, try this: write your program in pseudo-code, then start reading the manuals/tutorials. When you get to a bit that is needed in your program, read it corefully, then convert that section of your program from pseudo-code to asm. That way, you don't have to have a good general knowledge of the language to make some progress. Then, when you get stuck, post the section you are working on in here, and the guys can help.

Keep persevering. Sometimes things appear to be complex because we fail to see the simpleness in it :)
Posted on 2002-01-29 20:25:26 by sluggy

I get a sneaking suspicion that motivation is the problem you are dealing with, Randy Hyde's 16 bit AOA may be a little dated these days in relation to flat memory model 32 bit assembler but it is a particularly well written set of tutorials by a teacher who was interested in connecting assembler to his pupils.

I wish I had have had something similar many years ago when I started on x86 assembler instead of having to do it the hard way by reading the little that was around and writing test pieces. (Funny I used to have a directory called TC that was filled with test pieces that did to BIOS programming what an EBOLA virus did for population control)

Depending on your background experience in other languages, you would probably find 32 bit x86 assembler a lot better proposition as it is simpler, clearer and a lot faster.

Good luck with your pursuits.
Posted on 2002-01-29 20:39:12 by hutch--
hutch writes:
Depending on your background experience in other languages, you would probably find 32 bit x86 assembler a lot better proposition as it is simpler, clearer and a lot faster.

If by a 32 bit x86 assembler you mean masm32 -- I can't follow Iczelion's tutorial at all. And I am not aware of any other. If you mean win32asm -- I'm not even sure I know what it is -- I haven't figured out what it is from the win32asm.doc that comes with it, and I am not aware of any tutorial written for it, and the win32asm.doc says you need to already know assembly language to use win32asm, and then goes on for page after page talking about microsoft masm (ml.exe) without explaining what win32asm is, or what it is for.
Posted on 2002-01-29 21:24:43 by verb
Also, it is not clear to me if Iczelion's tutorials are the "win32 assembly" tutorials listed on this page: or if they are the set of files contained in the self-extracting file icztutes.exe, available for download here:

Both are unequivocally referred to as "Iczelion's Tutorials" at iczelion's web site. Yet they appear to be 2 entirely different things.
Posted on 2002-01-29 21:51:28 by verb

I think the problem is that current 32 bit assembler is not well suited to learn programming on x86 machines from scratch. If you have a background in compilers in 32 bit windows like C, Pascal, PowerBASIC etc ... then migrating to 32 bit assembler can be done with enough work but not having this background will leave you with the dilemma that you have.

I had this in mind when I built MASM32 as it is nearly impossible to cater for the new programmer market. Specialists like Randy Hyde who is a teacher by profession have worked in this area and AOA is a very good example of how to start on x86 assembler.

If you need technical background, the 3 Intel manuals are the best available and this will give you the necessary information to work in 32 bit windows but you also need to be able to handle the 32 bit windows API functions, there are about 11 thousand all up and getting bigger each windows release.

I would recommend that you start with a higher level language as most here have done and when you are satisfied with it, you can start on assembler.

Posted on 2002-01-30 01:20:53 by hutch--
sluggy writes:
Also, i think you don't need to waste(?) your time learning 16 bit asm, it has nasty stuff like memory segmentation to deal with. Instead, you may find it easier to jump into the 32 bit stuff which has a flat memory model.

Hutch writes:
I think the problem is that current 32 bit assembler is not well suited to learn programming on x86 machines from scratch.

Are the 2 statements contradictory (not that contradiction is always a bad thing) or am I missing something?

Hutch's statement implies, but does not say directly and unequivocally, that 16 bit assembler may be well- suited to learn programing on.

No-one commented specifically on whether 16-bit assembler is actually obsolete, or becoming obsolete. Is it?

And what about 32 bit assembler, but non-Windows, not used to control a Windows environment? Is there a practical use for 32 bit assember on 80586 machines, either with regard to Linux operating systems, or to other non-windows operating systems, or with regard to program or portions of programs which, though they run under Windows, don't need to control operation of the Windows operating system?
Posted on 2002-01-31 02:42:10 by verb
By the way, I think I am going to be able to learn assembly language from Randall Hyde's texts -- but I may have to read both of them, alternating between the 2, in order to get a comprehensive-enough picture of what is going on when my compiled script is run by my computer, that is, in order to conceptualize what it going on in the various parts of the computer when the program, compiled from my script, executes.
Posted on 2002-01-31 03:20:12 by verb
As for learning 16 bit assembly programming, depends on what you want.

If you want to learn assembly just for application, you can stick to 32 bit asm and you'll be fine.

If you want someday to do your own OS, (many people do, if at least for the learning experience), then since the processor starts in 16 bits, and most bios routines could be called only using 16 bit interrupts. You will definetely need to learn 16 bit programming.

Another thing I advice is to learn C/C++, why? Because on Operating system (being windows, beos, linux, etc) the documentation is for C/C++. So you will need at least learn how to interface your assembly program with C (not that hard). You will also need to know the set of rules of the OS you will be dealing with (for example, under windows you must save the esi, edi and ebx registers, and dont expect that the api will save anything else).

Besides that, assembly is a little like chess, easy to lean, hard to master.

BTW: AOA is one of the best book I have seen on learning assembly. (The other one was Mastering Turbo Assembly). The text is dated, but it does not matter since most of it still applies. After that, if you want to learn windows programming, go to iczelion's site and you'll be fine.
Posted on 2002-01-31 05:52:29 by dxantos
dxantos writes
Another thing I advice is to learn C/C++, why?

Absolutely. That's the next learning project on my list. And the next software acquistion.

By the way, I started learning Visual BASIC awhile back, and while i didn't have difficulty learning it from the tutorial, I just didn't enjoy learning it the way I enjoyed learning BASIC, or even Algol. It felt like whoever invented this thing was doing everything they could to make sure I was as disconnected from my computer as possible, as opposed to enabling me to connect to how the computer operates, and be able to exert finer control over its operation.

I've already put seveal days effort into tracking down what assembler software is available, and what learning material is available, and I don't want to abandon learning assemblers, and start learning something else first instead, now that I've gathered a little "steam" in the direction of learning assembly language. I want to take advantage of the head of steam I've gathererd.
Posted on 2002-01-31 08:34:34 by verb
I would propose you start programming and post here you problem you have and the things you don't know but want to make.:)

And remember that it could be harder!
There are poeple also need to learn the english language at the same time. And there are less good tutorials in other languages.
Posted on 2002-01-31 10:07:13 by TCT
I learnt from the Intel manuals, and tracing through existing code within DEBUG. It's really funny remembering when everything looked like gibberish. It's very easy to jump in and start writing 16-bit COM programs in DOS. The problem is that very little DOS API knowledge translated to Windows, but the knowledge of the instruction set is what you need to get a good foot hold on the 32-bit Windows stuff, in the begining, IMHO.

DOS COM programs don't require much knowledge about the environment. I would recommend using FASM - there are some examples and the additional syntax overhead for the assembler is minimal.

MASM Windows programming is in direct contrast. You have to have knowledge of 32-bit asm, API, MASM syntax. Of course, you can jump right in, but it gets discouraging when everything keeps breaking and you don't have a clue why and everyone is explaining a million things at once. ;)

I hope this provides a little guidance - it's just based on my experience - others have taken a different path and have found comfort there. If you want to start with 16-bit apps there is a group of people that work on a contest in 16-bit - the Hugi Size Coding Competition. You might want to try it just for practise, not to compete per se.

Happy Coding! :)
Posted on 2002-01-31 10:20:51 by bitRAKE
hutch and bitRAKE -- I downloaded, and then glanced at, The IA-32 Intel Architecture Software Developer?s Manual, Vol 2 : Instruction Set Reference.

Thanks for pointing me there.

Quite a lot to print out, and read, there! About 950 pages. And that's just 1 volume of 3.
Posted on 2002-02-02 19:14:15 by verb

Thats where the action is with this stuff, its worth downloading manual 1 as well as it gives you the architecture overview necessary to write this stuff properly.

Posted on 2002-02-02 19:22:11 by hutch--