News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

Concerns with Self Education with HLA / AoA

Started by QBRADQ, October 01, 2005, 05:21:17 AM

Previous topic - Next topic

QBRADQ

Greetings.

I am currently reading through "The Art of Assembly Language" (32-bit edition) in an effort to educate myself with regards to assembly-level programming. My formal education (which is ongoing) deals with systems administration and security in a Windows networked environment. However, programming has been a hoby of mine since grade school.

What I Have:

I do have a small amount of assembly experiance, involving basic NES (6502 + integrated hardware) and real-mode DOS (heavy use of interupts) applications.

The 6502 related study was quite serious, although it only lasted one month. In the process I learned may of the basic concepts of assembly programming, however being an 8-bit processor of a by-gone era the applicable experiance is mostly theoretical.

The real-mode study was mearly a carry over from the 6502 study. With the small bits of information I acquired, I was able to construct a basic library of keyboard and dispaly I/O routines, as well as a multiplication and division routine (I was unaware of the equivalent assembly instructions at that time).

I also have rather extensive knowlage and skill regarding high level languages such as C/C++ and compiled Java, as well as an intermediate understanding of scripted languages such as Python.

What I Want:

Ok, with that out of the way, I'd like to express what it is that I want out of all of this.

1) The ability to create standard 32-bit Windows applications in pmode.
-> Knowing HLA along seems to be enough for this goal. With HLA I wouldn't even (nessesarily) have to know the JXX instructions. Also, I already have a very good understanding with the Windows API, it's library functions, and it's data structures.

2) Suitable knowlage for working with MASM directly and to proficiently interprit MASM code as the situation may arise.
-> I am unsure if AoA would provide this knowlage.

3) Knowlage that would allow me to learn other low-level interfaces rapidly and efficently. A clarification on this: Requisit knowlage to transition from the 80x86 32-bit platform to the Z90 or ARM7 platform as easily as it is to transition from C/C++ to Java or Python once one has learned good fundementals in C/C++.
-> This is the most important point to me, as this knowlage and ability would prove the most useful over the course of my lifetime. It is unclear to me how well the text will reveal the underlying mechanics of HLA with regard to fundamental assmebly design and implementation. The theory is present in the text in the first two volumes, however I am unsure how well the actual implementations are presented.

I know this is a long post, but as you have read I have many misgivings about approaching this education with HLA. The text is very long and dense, and appears to be thourgh. These are the very reasons why I chose AoA in the first place, however the very same qualities make it difficult to assess the text without spending the many weeks of study needed to traverse the text.

If anyone is willing to despense with some of these misgivings, or suggest suplemental material that would help fill some of the dificenties in the text (in regards to my particular needs), that would be greatly appreciated.

Also, I would like to extend a word of thanks to Randy Hyde and all the contributors to "The Art of Assembly Language". Providing such an extensive and professional text dealing with such a technical matter is indeed a great acomplishment. Diseminating this text to the general populis is an act of contribution to the evolution of technology, something which I hold in the highest regard.

Thank you for your time,
QBRADQ

V Coder

"1) The ability to create standard 32-bit Windows applications in pmode."

You should be up and running 32-bit Windows console mode programs in little time. True Windows programs will take a bit longer, but you can follow the tutorials for that too.

Go ahead with the text, then also head over to AoA/HLA site and look at a couple of books on Windows programming.

Some aspects of HLA easy the learning curve, especially if you have a HLL background.

Randall Hyde

Quote from: QBRADQ on October 01, 2005, 05:21:17 AM
Greetings.

I
Ok, with that out of the way, I'd like to express what it is that I want out of all of this.

1) The ability to create standard 32-bit Windows applications in pmode.
-> Knowing HLA along seems to be enough for this goal. With HLA I wouldn't even (nessesarily) have to know the JXX instructions. Also, I already have a very good understanding with the Windows API, it's library functions, and it's data structures.
Though HLA's HLL-like control structures would allow you to avoid learning the low-level control structures, this isn't an appropriate approach for someone wanting to *learn* assembly language. When you have to deal with another assembly language syntax on the x86, you'll need this knowledge. The HLL control structures are an aid for learning assembly, but you should certainly master the low-level code at one point or another. I'm assuming with your past experience, this is not a problem.


Quote
2) Suitable knowlage for working with MASM directly and to proficiently interprit MASM code as the situation may arise.
-> I am unsure if AoA would provide this knowlage.
Quote
The MASM manuals are on-line on Webster. So once you've mastered x86 assembly via AoA/HLA, it's just a question of getting comfortable with another syntax. That's generally pretty easy for most people.


Quote
3) Knowlage that would allow me to learn other low-level interfaces rapidly and efficently. A clarification on this: Requisit knowlage to transition from the 80x86 32-bit platform to the Z90 or ARM7 platform as easily as it is to transition from C/C++ to Java or Python once one has learned good fundementals in C/C++.
-> This is the most important point to me, as this knowlage and ability would prove the most useful over the course of my lifetime. It is unclear to me how well the text will reveal the underlying mechanics of HLA with regard to fundamental assmebly design and implementation. The theory is present in the text in the first two volumes, however I am unsure how well the actual implementations are presented.
This won't be a problem. Of course, most of the real assembly language "meat" starts in volume 3 of the on-line version, so this is probably why you have your concerns.

Quote
Cheers,
Randy Hyde

tenkey

Quote from: QBRADQ on October 01, 2005, 05:21:17 AM
3) Knowlage that would allow me to learn other low-level interfaces rapidly and efficently. A clarification on this: Requisit knowlage to transition from the 80x86 32-bit platform to the Z90 or ARM7 platform as easily as it is to transition from C/C++ to Java or Python once one has learned good fundementals in C/C++.
-> This is the most important point to me, as this knowlage and ability would prove the most useful over the course of my lifetime. It is unclear to me how well the text will reveal the underlying mechanics of HLA with regard to fundamental assmebly design and implementation. The theory is present in the text in the first two volumes, however I am unsure how well the actual implementations are presented.

Learning a different processor requires dealing with either the extra resources of a "larger" processor or the fewer resources of a "smaller" processor. The x86 platform is a high-end platform. To get a feel for other low end processors, check out the 8051-compatibles or the various versions of the Microchip PIC. The 8051 is similar to the 6502 (compared to the PIC), but has fewer addressing modes. The low-end PICs have a fairly minimal instruction set, and very little RAM space. They have an architecture that is somewhat unconventional. I don't have experience with the high-end PICs, so I can't tell you much about them.

"Learning low-level interfacing" really requires learning about hardware interfacing. There's quite a range of interfacing techniques. High speed techniques differ from low speed techniques. Some hardware requires you to work with blocks of data, rather than individual bytes or bits. In the area of communication links, there are several data and hardware protocols (plus you can build your own.) Some hardware are fairly simple, requiring only a few input/output commands to control them. Others have complex command sequences.

To be able to handle any kind of hardware, your starting needs are the ability to read the data sheets of the hardware, and the ability to read the specs of various interface standards. Then it's a matter of figuring out how to setup and enable a hardware activity. And how to detect and respond to various hardware events. Be willing to hunt for "application notes" provided by manufacturers.
A programming language is low level when its programs require attention to the irrelevant.
Alan Perlis, Epigram #8

JDawg

 :U
NES Rules!!!
How can a guy go about getting ahold of some of that software from the 6502? 
I don't care if it's been twenty freakin' years, the NES is still the number one game console in my opinion.  If you know how I can get it please let me know.