From: JGCASEY on



When Beta and VHS went head to head I was told
Beta was a better product. If for arguments
sake this was the case Beta still failed as VHS
apparently had more movie titles which was the
whole point of video tape in the first place.

And I think that would apply to operating systems
such as Linux vs. Windows or applications such as
MASM, TASM, NASM, FASM, RosAsm, GAS or HLA. In
the case of the list of assemblers read "tutorials"
instead of "titles".

In my quest to get up to speed with Windows assembler
the cold reality is MASM has the examples.

Now when I first learnt assembler for DOS with TASM
and then went onto MASM the translation was easy as
none of the books used the high level constructs
and directives I see in the MASM Window examples.

Thus I get an example like this,

.. . .

start: ; The CODE entry point to the program

print chr$("Hey, this actually works.",13,10)
exit
;
end start ; Tell MASM where the program ends

Without any explanation of where the "print" instruction
came from or how to use it.

As for Iczelion's tutorials they do assume a working
knowledge of MASM. So I wonder how many programmers
using NASM, FASM, RosASM etc actually learnt Windows
assembler using those assemblers? There are no beginner
tutorials for them so I suspect they learnt assembler
with MASM?


Although I think I get the "invoke" statement there are
other statements such as,

LOCAL wc:WNDCLASSEX ; create local variables on stack

that are not explained in a way I could translate this
to say FASM.

and what I presume are directives of some kind,

..WHILE TRUE ; Enter message loop
invoke GetMessage, ADDR msg,NULL,0,0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
..ENDW

leaving me wondering what is being tested for being TRUE?

Now I know the answers can be found scattered all over
the web somewhere. Indeed the obvious place to look
was Randy Hydes AoA.

While looking through AoA these lines struck a cord,

"A lot of so-called "advanced" assembly language
programmers get carried away with the idea that
they can create their own instructions via macro
definitions and they start creating macros for
every imaginable function under the sun. The COPY
macro presented earlier is a good example. The
80x86 doesn't support a memory to memory move
operation. Fine, we'll create a macro that does
the job for us."

"Soon, the assembly language program doesn't look
like 80x86 assembly language at all."

Window examples don't look like the old assembly
language I learnt with DOS that is for sure!

"Instead, a large number of the statements
are macro invocations. Now this may be great for
the programmer who has created all these macros
and intimately understands their operation. To
the 80x86 programmer who isn't familiar with
those macros, however, it's all gibberish."

My thoughts exactly. Unless *fully* explained
they are all gibberish.

That's why, and I direct this to René in particular,
I have to use MASM.

I don't have the education or time to learn from
the intel documentation when there is an easier
way. Let experts like Randy Hyde explain it to
me with his AoA the same way I learnt DOS
assembler from the assembler books I have on my
shelf. I have to use the assembler they use.

The only alternative is for those developing yet
another assembler is to realise that if they want
new blood they need to spend more time on tutorials
and less time on giving their product even more
bells and whistles.

-
John

From: Donkey on
JGCASEY wrote:
>
>
> When Beta and VHS went head to head I was told
> Beta was a better product. If for arguments
> sake this was the case Beta still failed as VHS
> apparently had more movie titles which was the
> whole point of video tape in the first place.
>
> And I think that would apply to operating systems
> such as Linux vs. Windows or applications such as
> MASM, TASM, NASM, FASM, RosAsm, GAS or HLA. In
> the case of the list of assemblers read "tutorials"
> instead of "titles".
>
> In my quest to get up to speed with Windows assembler
> the cold reality is MASM has the examples.
>
> Now when I first learnt assembler for DOS with TASM
> and then went onto MASM the translation was easy as
> none of the books used the high level constructs
> and directives I see in the MASM Window examples.
>
> Thus I get an example like this,
>
> . . .
>
> start: ; The CODE entry point to the program
>
> print chr$("Hey, this actually works.",13,10)
> exit
> ;
> end start ; Tell MASM where the program ends
>
> Without any explanation of where the "print" instruction
> came from or how to use it.
>
> As for Iczelion's tutorials they do assume a working
> knowledge of MASM. So I wonder how many programmers
> using NASM, FASM, RosASM etc actually learnt Windows
> assembler using those assemblers? There are no beginner
> tutorials for them so I suspect they learnt assembler
> with MASM?
>
>
> Although I think I get the "invoke" statement there are
> other statements such as,
>
> LOCAL wc:WNDCLASSEX ; create local variables on stack
>
> that are not explained in a way I could translate this
> to say FASM.
>
> and what I presume are directives of some kind,
>
> .WHILE TRUE ; Enter message loop
> invoke GetMessage, ADDR msg,NULL,0,0
> .BREAK .IF (!eax)
> invoke TranslateMessage, ADDR msg
> invoke DispatchMessage, ADDR msg
> .ENDW
>
> leaving me wondering what is being tested for being TRUE?
>
> Now I know the answers can be found scattered all over
> the web somewhere. Indeed the obvious place to look
> was Randy Hydes AoA.
>
> While looking through AoA these lines struck a cord,
>
> "A lot of so-called "advanced" assembly language
> programmers get carried away with the idea that
> they can create their own instructions via macro
> definitions and they start creating macros for
> every imaginable function under the sun. The COPY
> macro presented earlier is a good example. The
> 80x86 doesn't support a memory to memory move
> operation. Fine, we'll create a macro that does
> the job for us."
>
> "Soon, the assembly language program doesn't look
> like 80x86 assembly language at all."
>
> Window examples don't look like the old assembly
> language I learnt with DOS that is for sure!
>
> "Instead, a large number of the statements
> are macro invocations. Now this may be great for
> the programmer who has created all these macros
> and intimately understands their operation. To
> the 80x86 programmer who isn't familiar with
> those macros, however, it's all gibberish."
>
> My thoughts exactly. Unless *fully* explained
> they are all gibberish.
>
> That's why, and I direct this to RenĂ½ in particular,
> I have to use MASM.
>
> I don't have the education or time to learn from
> the intel documentation when there is an easier
> way. Let experts like Randy Hyde explain it to
> me with his AoA the same way I learnt DOS
> assembler from the assembler books I have on my
> shelf. I have to use the assembler they use.
>
> The only alternative is for those developing yet
> another assembler is to realise that if they want
> new blood they need to spend more time on tutorials
> and less time on giving their product even more
> bells and whistles.
>
> -
> John
>
I tend to agree with you, MASM is definitely the assembler to start with
because of ease of use, the wealth of tools available and ofcourse the
tutorials. But once you have grasped the basics of assembly you might
want to look at the other assemblers as they may be more finely tuned to
your coding practices. Many have features that are missing from MASM and
some have Linux versions as well. All in all though you would probably
be fine just using MASM, after all it is the biggest and the best
around. I use GoAsm, after quite a while with MASM, because I don't need
that high level constructs or macro features but like the inline strings
as well as the more powerful INVOKE and scoping.

Donkey
From: hutch-- on
John,

Somewhere along the line you will have to make the decision as to
whether you want to do enough work to learn 32 bit assembler or not.
The things you face are learning the logic and details of Windows API
calls and a message driven windowing system and the range of later
processor instructions available in 32 bit code.

The work I do in MASM is in part aimed at simplifying the entry into
assembler programming and this is what the macros are for. The "print"
macro is a direct take from console mode basic as its use is easy to
understand and it save the beginner from learning console mode API
calls just to display something on the screen.

It is documented in both the older MASMLIB.HLP and the later HLHELP.HLP
files and the actualy macro is contained in the main macros.asm file.
The source code for the library module that the macro calls is in the
m32lib directory and its directly accessible from the default editor
that comes with masm32.

You will have no problems with a range of other assemblers if you
bother to learn how they work and learn the OS they are targetted at.
In LINUX you have GGC GAS, NASM, YASM and FASM, all of which are
competent and in Windows you have MASM, FASM, GoAsm, NASM as current
capable assemblers.

If you don't have the time to do all of the work to learn an assembler,
it may be to your advantage to use a higher level language that does
not have such a complex lead time. VC works fine, Delphi if you can
suffer Pascal, PB for basic and a host of other languages that are far
shorter learning curves than assembler programming.

Regards,

hutch at movsd dot com

From: JGCASEY on

Donkey wrote:

> I tend to agree with you, MASM is definitely the
> assembler to start with because of ease of use,
> the wealth of tools available and ofcourse the
> tutorials. But once you have grasped the basics
> of assembly you might want to look at the other
> assemblers as they may be more finely tuned to
> your coding practices. Many have features that
> are missing from MASM and some have Linux versions
> as well. All in all though you would probably
> be fine just using MASM, after all it is the
> biggest and the best around. I use GoAsm, after
> quite a while with MASM, because I don't need
> that high level constructs or macro features but
> like the inline strings as well as the more
> powerful INVOKE and scoping.
>
> Donkey


I never considered GoAsm. I have just perused
the GoAsm manual and Donkey's Stable :)

But you still recommend spending a few months
with MASM before attempting GoAsm? The little
projects I want to do don't require high level
constucts or even macros.

John

From: JGCASEY on

hutch-- wrote:
hutch-- wrote:
> John,
>
> Somewhere along the line you will have to make
> the decision as to whether you want to do enough
> work to learn 32 bit assembler or not.


Yes I understand that Hutch. It wasn't about me.

I was giving an interested "outsiders" point
of view. Of course if they just want to keep
assembler programming "in house" amongst the
chosen ones who have paid their dues and can
already program Windows assembler thanks to
MASM (GAS?) than no more to be said :)

Regardless of HLA being a preparser or assembler
at least Randy Hyde is promoting and *educating*
his potential users with tutorials.


> The things you face are learning the logic and
> details of Windows API calls and a message driven
> windowing system and the range of later processor
> instructions available in 32 bit code.
>
> The work I do in MASM is in part aimed at
> simplifying the entry into assembler programming
> and this is what the macros are for. The "print"
> macro is a direct take from console mode basic
> as its use is easy to understand and it save the
> beginner from learning console mode API calls
> just to display something on the screen.


The "print" statement is easy to understand only
in terms of what it does not in how it does it.
It merely hides the machinations taking place
underneath which is the very thing an assembler
programmer needs to know so that later they can
write their own macros or even more importantly
convert to another assembler that may not have
that particular macro. It only adds to the burden
of really learning and understanding assembler.



> It is documented in both the older MASMLIB.HLP
> and the later HLHELP.HLP files and the actually
> macro is contained in the main macros.asm file.
> The source code for the library module that the
> macro calls is in the m32lib directory and its
> directly accessible from the default editor
> that comes with masm32.


Ok. Thanks for that information.


> You will have no problems with a range of other
> assemblers if you bother to learn how they work
> and learn the OS they are targeted at. In LINUX
> you have GGC GAS, NASM, YASM and FASM, all of
> which are competent and in Windows you have MASM,
> FASM, GoAsm, NASM as current capable assemblers.
>
> If you don't have the time to do all of the work
> to learn an assembler, it may be to your advantage
> to use a higher level language that does not have
> such a complex lead time. VC works fine, Delphi if
> you can suffer Pascal, PB for basic and a host of
> other languages that are far shorter learning
> curves than assembler programming.


Well of course I do use HLLs. As someone who once
used assembler I wanted to spend some time trying
to understand Windows from an assembler point
of view. MASM appears to be the best/fastest way
of achieving that *because it has the examples and
tutorials* lacking in the other assemblers. Like
the VHS vs. Beta it may not be, according to some,
the better product but it does have more of what
a beginner needs.


Regards,

John

 |  Next  |  Last
Pages: 1 2 3 4 5 6
Prev: int 10h AX = 4F00h
Next: Iczelion's tutorials revisited.