nasm, tasm, masm, hla 
Author Message
 nasm, tasm, masm, hla

What to use?
What is free and what is not?
Web pages would be of grate help.

\nils



Tue, 26 Apr 2005 06:53:21 GMT  
 nasm, tasm, masm, hla

Hi,

Take a look at:
  http://www.{*filter*}trails.com/~fys/links.htm#assemblers


Quote:
> What to use?
> What is free and what is not?
> Web pages would be of grate help.

> \nils



Tue, 26 Apr 2005 07:20:48 GMT  
 nasm, tasm, masm, hla
Get MASM.  You have no need for anything else.  It's compatible with
everything else being developed today.  Nasm is falling away.  Tasm is dead.
HLA is, uh, different.


Tue, 26 Apr 2005 08:18:11 GMT  
 nasm, tasm, masm, hla

Quote:

> Get MASM.  You have no need for anything else.  It's compatible with
> everything else being developed today.  Nasm is falling away.  Tasm is dead.
> HLA is, uh, different.

"falling away", is it? Not sure how you figure that. If Nils is a
monopoly-lover like you, sure Masm is fine...

Here's a copy of what I just sent to someone else (looking for "Windows
assembly" specifically - Nils doesn't say, but that's probably what he
wants - that's why NBASM isn't on there) - actually Ben's post links to
a fairly "factual" comparison of what's available, so I thought that
covered it, but...

------------------------------------------------------
There are many choices - most of them free. The exception would be Tasm
- a perfectly good assembler, but it appears that Borland is no longer
supporting it, so I wouldn't really recommend it. (if you don't mind
stealing it, google for tasm5.zip - it can usually be found).

You'll need some other tools besides the assembler itself - a linker,
perhaps a resource-compiler, definitely some include files and
libraries. The best choice for you may depend on what you're using, and
are used to, for programming tools. It's largely a matter of personal
taste. You can get a Windows program out of almost any assembler - I've
even gotten a working Windows program out of DEBUG, but it was more of a
"stunt" - I definitely wouldn't advise it :)

I'm a "Nasm-bigot", so that would be my number one suggestion. You can
get the latest version of Nasm from the "developer's page":

http://nasm.sourceforge.net

But you'll probably want a "package". One such, suitable for use with
the "-f obj" format from Nasm (good for the Borland linker Tlink, or
Alink ( http://alink.sourceforge.net ), or similar, can be found at:

http://rs1.szif.hu/~tomcat/win32/

Another package ("better", perhaps), using MS's linker, or lcc's linker,
or similar (use Nasm's "-f win32" format):

http://www.phoenix.gb.net/x86/

You can get a complete package - everything you need, plus a "RAD IDE",
with NaGoA (Nasm-Gorc-Alink). Includes the above, plus more examples,
tutorials, etc. (big download!) from:

http://www.visual-assembler.pt.vu/

Another option would be the "SPecific Assembler" - designed
"specifically" for Windows programs - it's an all-in-one tool, and
includes the source code in the executable (optionally removable) - the
ultimate in open-source distribution:

http://betov.free.fr/SpAsm.html

The author of "Gorc" (a resource-compiler) has recently written an
assembler as well. I've never used it. If you try it, let me know how
you like it:

http://www.godevtool.com/

If you don't mind using MS tools ("free" in the sense of "free beer",
but not in the sense of "free speech") there's a *very* nice package at:

http://www.movsd.com/masm.htm

You can also find that package, plus HLA - the High Level Assembler, a
new assembly language specifically written to teach assembly language to
students who know a high level language (it's rather Pascal-like), at:

http://webster.cs.ucr.edu/

This is also the home of the "Art of Assembler" tutorial(s) - the old
16-bit version is pretty well agreed to be the best, most extensive,
tutorial available. I personally think if you're completely new to asm,
learning some 16-bit dos programming to "get the hang of it" first would
be a good idea (although dos programming, in itself, is pretty useless
these days). If you know Windows programming pretty well in some HLL,
this may not apply.

I've probably (definitely!) missed some other options, but evaluating
the above ones should keep you occupied for a while. Have fun!

Best,
Frank



Tue, 26 Apr 2005 11:38:08 GMT  
 nasm, tasm, masm, hla
If you finally decide on MASM (free (check out Hutch's page)) then you
should definitely look at RadASM, it works with all popular assemblers. And
just as a side note, the NASM TASM bigots be damned, MASM is called a
monopoly because almost everybody uses it, it performs as well or better
than any other assembler and is kept up to date by the work of Iczelion and
Hutch. It's annoying to be called a monopoly supporter just because you
chose the assembler that's going to be around after all those others are
just distant memories.

Edgar


Quote:

> > Get MASM.  You have no need for anything else.  It's compatible with
> > everything else being developed today.  Nasm is falling away.  Tasm is
dead.
> > HLA is, uh, different.

> "falling away", is it? Not sure how you figure that. If Nils is a
> monopoly-lover like you, sure Masm is fine...

> Here's a copy of what I just sent to someone else (looking for "Windows
> assembly" specifically - Nils doesn't say, but that's probably what he
> wants - that's why NBASM isn't on there) - actually Ben's post links to
> a fairly "factual" comparison of what's available, so I thought that
> covered it, but...

> ------------------------------------------------------
> There are many choices - most of them free. The exception would be Tasm
> - a perfectly good assembler, but it appears that Borland is no longer
> supporting it, so I wouldn't really recommend it. (if you don't mind
> stealing it, google for tasm5.zip - it can usually be found).

> You'll need some other tools besides the assembler itself - a linker,
> perhaps a resource-compiler, definitely some include files and
> libraries. The best choice for you may depend on what you're using, and
> are used to, for programming tools. It's largely a matter of personal
> taste. You can get a Windows program out of almost any assembler - I've
> even gotten a working Windows program out of DEBUG, but it was more of a
> "stunt" - I definitely wouldn't advise it :)

> I'm a "Nasm-bigot", so that would be my number one suggestion. You can
> get the latest version of Nasm from the "developer's page":

> http://nasm.sourceforge.net

> But you'll probably want a "package". One such, suitable for use with
> the "-f obj" format from Nasm (good for the Borland linker Tlink, or
> Alink ( http://alink.sourceforge.net ), or similar, can be found at:

> http://rs1.szif.hu/~tomcat/win32/

> Another package ("better", perhaps), using MS's linker, or lcc's linker,
> or similar (use Nasm's "-f win32" format):

> http://www.phoenix.gb.net/x86/

> You can get a complete package - everything you need, plus a "RAD IDE",
> with NaGoA (Nasm-Gorc-Alink). Includes the above, plus more examples,
> tutorials, etc. (big download!) from:

> http://www.visual-assembler.pt.vu/

> Another option would be the "SPecific Assembler" - designed
> "specifically" for Windows programs - it's an all-in-one tool, and
> includes the source code in the executable (optionally removable) - the
> ultimate in open-source distribution:

> http://betov.free.fr/SpAsm.html

> The author of "Gorc" (a resource-compiler) has recently written an
> assembler as well. I've never used it. If you try it, let me know how
> you like it:

> http://www.godevtool.com/

> If you don't mind using MS tools ("free" in the sense of "free beer",
> but not in the sense of "free speech") there's a *very* nice package at:

> http://www.movsd.com/masm.htm

> You can also find that package, plus HLA - the High Level Assembler, a
> new assembly language specifically written to teach assembly language to
> students who know a high level language (it's rather Pascal-like), at:

> http://webster.cs.ucr.edu/

> This is also the home of the "Art of Assembler" tutorial(s) - the old
> 16-bit version is pretty well agreed to be the best, most extensive,
> tutorial available. I personally think if you're completely new to asm,
> learning some 16-bit dos programming to "get the hang of it" first would
> be a good idea (although dos programming, in itself, is pretty useless
> these days). If you know Windows programming pretty well in some HLL,
> this may not apply.

> I've probably (definitely!) missed some other options, but evaluating
> the above ones should keep you occupied for a while. Have fun!

> Best,
> Frank



Tue, 26 Apr 2005 15:57:39 GMT  
 nasm, tasm, masm, hla

Quote:

> You'll need some other tools besides the assembler itself - a linker,
> perhaps a resource-compiler, definitely some include files and
> libraries. The best choice for you may depend on what you're using, and
> are used to, for programming tools. It's largely a matter of personal
> taste. You can get a Windows program out of almost any assembler - I've
> even gotten a working Windows program out of DEBUG, but it was more of a
> "stunt" - I definitely wouldn't advise it :)

I also just started with some Windows assembler programing
experiments. Debug isn't even an assembler, so better forget
about it. But I think the best way to learn something is, to
do it at the lowest level (if you want HLA use a C compiler).
Therefore I use an assembler which generates DOS com files.
DOS com files doesn't have any headers, so any byte in the
output file is generated (and controlled) by your assembler
program (I don't like it, when an assembler or linker inserts
bytes in my program without my explicit order). It think it
should be possible to generate all the header and data
structures in the exe file by the assembler program without
big problems (as long as you don't need to append relocation
information).

As a first start I have rewritten one of the smallest programs I
found in \WINNT\SYSTEM32 in assembler and tried to identify any
byte in the exe. It was write.exe which is only 6 kbyte and does
nothing but start wordpad.exe. If you assemble the source, you
will get a .com file which is identically with the original write.exe.
In the source there are still many ??? (does somebody no, where I
can get information about the functions in MSVCRT.dll like
__p__commode, _initterm, ...), but I think I can learn much
more this way than just using invoke commands in a windows
assembler.

If somebody is interested, I have put the source (in it's current
state with still some unidentified parts) together with the
assembler on my ftp server:

ftp://137.193.64.130/pub/assembler/windela.zip



Tue, 26 Apr 2005 18:22:06 GMT  
 nasm, tasm, masm, hla
I thought MASM was a Microsoft product but you are talking about Iczelion
and Hutch please explain the diference.
/nils


Quote:
> If you finally decide on MASM (free (check out Hutch's page)) then you
> should definitely look at RadASM, it works with all popular assemblers.
And
> just as a side note, the NASM TASM bigots be damned, MASM is called a
> monopoly because almost everybody uses it, it performs as well or better
> than any other assembler and is kept up to date by the work of Iczelion
and
> Hutch. It's annoying to be called a monopoly supporter just because you
> chose the assembler that's going to be around after all those others are
> just distant memories.

> Edgar




> > > Get MASM.  You have no need for anything else.  It's compatible with
> > > everything else being developed today.  Nasm is falling away.  Tasm is
> dead.
> > > HLA is, uh, different.

> > "falling away", is it? Not sure how you figure that. If Nils is a
> > monopoly-lover like you, sure Masm is fine...

> > Here's a copy of what I just sent to someone else (looking for "Windows
> > assembly" specifically - Nils doesn't say, but that's probably what he
> > wants - that's why NBASM isn't on there) - actually Ben's post links to
> > a fairly "factual" comparison of what's available, so I thought that
> > covered it, but...

> > ------------------------------------------------------
> > There are many choices - most of them free. The exception would be Tasm
> > - a perfectly good assembler, but it appears that Borland is no longer
> > supporting it, so I wouldn't really recommend it. (if you don't mind
> > stealing it, google for tasm5.zip - it can usually be found).

> > You'll need some other tools besides the assembler itself - a linker,
> > perhaps a resource-compiler, definitely some include files and
> > libraries. The best choice for you may depend on what you're using, and
> > are used to, for programming tools. It's largely a matter of personal
> > taste. You can get a Windows program out of almost any assembler - I've
> > even gotten a working Windows program out of DEBUG, but it was more of a
> > "stunt" - I definitely wouldn't advise it :)

> > I'm a "Nasm-bigot", so that would be my number one suggestion. You can
> > get the latest version of Nasm from the "developer's page":

> > http://nasm.sourceforge.net

> > But you'll probably want a "package". One such, suitable for use with
> > the "-f obj" format from Nasm (good for the Borland linker Tlink, or
> > Alink ( http://alink.sourceforge.net ), or similar, can be found at:

> > http://rs1.szif.hu/~tomcat/win32/

> > Another package ("better", perhaps), using MS's linker, or lcc's linker,
> > or similar (use Nasm's "-f win32" format):

> > http://www.phoenix.gb.net/x86/

> > You can get a complete package - everything you need, plus a "RAD IDE",
> > with NaGoA (Nasm-Gorc-Alink). Includes the above, plus more examples,
> > tutorials, etc. (big download!) from:

> > http://www.visual-assembler.pt.vu/

> > Another option would be the "SPecific Assembler" - designed
> > "specifically" for Windows programs - it's an all-in-one tool, and
> > includes the source code in the executable (optionally removable) - the
> > ultimate in open-source distribution:

> > http://betov.free.fr/SpAsm.html

> > The author of "Gorc" (a resource-compiler) has recently written an
> > assembler as well. I've never used it. If you try it, let me know how
> > you like it:

> > http://www.godevtool.com/

> > If you don't mind using MS tools ("free" in the sense of "free beer",
> > but not in the sense of "free speech") there's a *very* nice package at:

> > http://www.movsd.com/masm.htm

> > You can also find that package, plus HLA - the High Level Assembler, a
> > new assembly language specifically written to teach assembly language to
> > students who know a high level language (it's rather Pascal-like), at:

> > http://webster.cs.ucr.edu/

> > This is also the home of the "Art of Assembler" tutorial(s) - the old
> > 16-bit version is pretty well agreed to be the best, most extensive,
> > tutorial available. I personally think if you're completely new to asm,
> > learning some 16-bit dos programming to "get the hang of it" first would
> > be a good idea (although dos programming, in itself, is pretty useless
> > these days). If you know Windows programming pretty well in some HLL,
> > this may not apply.

> > I've probably (definitely!) missed some other options, but evaluating
> > the above ones should keep you occupied for a while. Have fun!

> > Best,
> > Frank



Tue, 26 Apr 2005 23:48:17 GMT  
 nasm, tasm, masm, hla


The inconvenients at choosing MASM should no more require any
demonstration, as they are so evident, at a simple technical point
of vue and/or at an historical point of vue. But, for now, talking about:

Quote:
> ....MASM is called a
> monopoly because almost everybody uses it, it performs as well or better
> than any other assembler and is kept up to date by the work of Iczelion
> and Hutch. It's annoying to be called a monopoly supporter just because
> you chose the assembler that's going to be around after all those others
> are just distant memories.

... and about:

Quote:
>Get MASM.  You have no need for anything else.  It's compatible with
>everything else being developed today...

... and for answering to:

Quote:
>I thought MASM was a Microsoft product but you are talking about Iczelion
>and Hutch please explain the diference.

MASM is MASM and MASM is a MicroSoft product. Period. The fact that it
is distributed for free (money free...), by an individual does not
change one inch of the fact that using it, is *not* using a freedom
Assembler. Supporting MASM *is* fighting *against* freedom in the
programing area.

On one hand, MASM is so bad, at all point of vues, that there is really
zero technical reasons for using it.

On the other hand, you can guess that, whereas there are many other good
choices to do -depending on your own needs- if some guys are pushing MASM,
they *must* have some 'motivations' for doing this. Personnaly, it took
me several years to understand these incredible points:

Point 1) There do exist some "Anti-GPL" programmers. I first did not
thought such a thing possible, but YES, IT IS.

Point 2) Most of the so called MASM programmers are simply *not*
Assembly programmers at all. Usually, they are HLLs programmers, playing
the Asm Masters without any real base and using MASM, as a side tool for
producing Code-level optimised Routines.

This is what MASM has been written for, and this what MASM is distributed
for, by M$, in a C package.

Do not be impressed by the fact that MASM is de-facto the more in use
Assembler. This does simply not mean a thing. Instead, ask those MASM
defenders how many real-life-Applications they wrote with MASM, and
where you can download them from... My own Megas of Assembly written
Applications are available at: < http://betov.free.fr/SpAsm.html >
(Sorry, but i have to say this: The "weight" of what each one says
here is not democratically equal. It is measurable, and the unit is Mb
of Sources).

When Iczelion, Test Departement, Ron Thomas, and other "opening doors
programmers" have forced the closed door to Win32 Asm programming for
us, at that time, they simply had no other choice out of MASM, because
NASM, SpAsm, FASM, GoAsm did not yet exist, at that time, or, at least,
did not yet exist under the evoluated and realiable form they now are.

So, this is not on the fault of Iczelion if MASM has first been used
for the first Win32Asm programing. This is nothing but an error of the
history itself, not of Iczelion and others. Actually, there is no more
any reason for going on in that catastrophic direction. If you do the
wrong choice, today, ... good for you ;)

______________________________________

Now, coming back to:

Quote:
> ....MASM is called a
> monopoly because almost everybody uses it, it performs as well or better
> than any other assembler and is kept up to date by the work of Iczelion
> and Hutch. It's annoying to be called a monopoly supporter just because
> you chose the assembler that's going to be around after all those others
> are just distant memories.
> ....MASM is called a monopoly because almost everybody uses it...

I don't use it, and i don't feel so lonely.

Quote:
>... it performs as well or better than any other assembler...

Where are your real life Applications written with MASM? Why and how could
they be "better" than the ones written with NASM, FASM, SpAsm, GoAsm???

Quote:
>... is kept up to date by the work of Iczelion and Hutch...


Where are these Sources available??? What do you call "the work of Hutch"???
Where is an Assembly written Application written by Hutch available???

Quote:
> It's annoying to be called a monopoly supporter just because
> you chose the assembler that's going to be around after all those others
> are just distant memories.

May be you could help us turning our memories distant from MASM by shuting
up your mouth while eating your Mac-Do Cheese Burger and drinking your
Coca-Cola, instead of missleading beginners.

Betov, as hungry as usual...



Wed, 27 Apr 2005 03:45:06 GMT  
 nasm, tasm, masm, hla

Quote:

> I also just started with some Windows assembler programing
> experiments. Debug isn't even an assembler, so better forget
> about it. But I think the best way to learn something is, to
> do it at the lowest level (if you want HLA use a C compiler).
> Therefore I use an assembler which generates DOS com files.

Well, I agree that debug is best forgotten. But my foolish experiments
led me to notice a mysterious thing. Debug, of course, insisted that the
result be named ".com". As expected, the thing loaded, and - named
".com" or not - it's a PE executable, and ran as such. Just for fun, I
dragged it onto the desktop so I could "pointee clickee" on it. Worked
fine the first few times, but after a few invocations, the "dos window"
stayed open, displaying an "insufficient memory" message. Renaming it to
".exe" - identical file, of course - removed the problem. As if Windows
was re-using the same dos-box, and the memory wasn't being freed
properly, or something.

Quote:
> ftp://137.193.64.130/pub/assembler/windela.zip

Cool!!! (I wish now that I'd actually *attended* that German class I
"took" in college!) I just tried the same experiment with "minimum.com",
and got the same result. If you drag it onto the desktop and click on
it, it runs out of memory after a few runs. (haven't tried renaming it
to ".exe" yet, but I assume it would eliminate this effect) Seems as if
Windows *does* care what the file is named. As far as I've noticed, this
happens only if you put it on the desktop and click on it - multiple
runs from the command line don't do it.

Any insight as to what's happening there? (running Win98, btw)

Best,
Frank



Wed, 27 Apr 2005 14:58:52 GMT  
 nasm, tasm, masm, hla
The debate over the use of a macro assembler versus "Pure Assembler" is a
load of Cr*p, the code for..

push param2
push param1
call function

and

invoke function,param1,param2

compile identically, there is no difference except that one version has
error checking and maybe you can finish your project without leving it in
you will for your granchildren. Iczelion and Hutch are keeping the
Windows.inc and related support files up to date, as a matter of fact they
are currently working on a new version. I realize that ML.exe is a microsoft
program, I am capable of reading the EULA, I have re-read my post and am
sorry for any misunderstandings.

As for other assemblers, well, there are alot of fish in the sea, but
whatever your opinion, Microsoft is the sea, the earth and 95% of the whole
universe so love em or not, you can't ignore them. The debate over which
assembler is best is moot, the real debate is in the classified section of
your newspaper, I have never seen an ad looking for NASM programmers, I have
seen several looking for MASM programmers.

What's wrong with using MASM to produce side code for other languages? Is
there a list of requirements that must be met before you can use assembler?
I guess I missed that lecture when I went to university, THE IRREVOCABLE
SEPERATION OF LANGUAGES 101, I'll have to check my notes. Some languages are
better suited to certain tasks C++ is well suited to COM, ASM is well suited
to small fast code, VB is well suited to short development time. It's a
little elitest to assume that because you use MASM you're not an assembly
programmer, again, who cares, the only measure of a programmer is the
ability to get the job done within the specifications provided, nothing
else. The importance you place on the "purity" of the language is a little
{*filter*}retentive, get over it.

Edgar Hansen.


Quote:


> The inconvenients at choosing MASM should no more require any
> demonstration, as they are so evident, at a simple technical point
> of vue and/or at an historical point of vue. But, for now, talking about:

> > ....MASM is called a
> > monopoly because almost everybody uses it, it performs as well or better
> > than any other assembler and is kept up to date by the work of Iczelion
> > and Hutch. It's annoying to be called a monopoly supporter just because
> > you chose the assembler that's going to be around after all those others
> > are just distant memories.

> ... and about:

> >Get MASM.  You have no need for anything else.  It's compatible with
> >everything else being developed today...

> ... and for answering to:

> >I thought MASM was a Microsoft product but you are talking about Iczelion
> >and Hutch please explain the diference.

> MASM is MASM and MASM is a MicroSoft product. Period. The fact that it
> is distributed for free (money free...), by an individual does not
> change one inch of the fact that using it, is *not* using a freedom
> Assembler. Supporting MASM *is* fighting *against* freedom in the
> programing area.

> On one hand, MASM is so bad, at all point of vues, that there is really
> zero technical reasons for using it.

> On the other hand, you can guess that, whereas there are many other good
> choices to do -depending on your own needs- if some guys are pushing MASM,
> they *must* have some 'motivations' for doing this. Personnaly, it took
> me several years to understand these incredible points:

> Point 1) There do exist some "Anti-GPL" programmers. I first did not
> thought such a thing possible, but YES, IT IS.

> Point 2) Most of the so called MASM programmers are simply *not*
> Assembly programmers at all. Usually, they are HLLs programmers, playing
> the Asm Masters without any real base and using MASM, as a side tool for
> producing Code-level optimised Routines.

> This is what MASM has been written for, and this what MASM is distributed
> for, by M$, in a C package.

> Do not be impressed by the fact that MASM is de-facto the more in use
> Assembler. This does simply not mean a thing. Instead, ask those MASM
> defenders how many real-life-Applications they wrote with MASM, and
> where you can download them from... My own Megas of Assembly written
> Applications are available at: < http://www.*-*-*.com/ ;
> (Sorry, but i have to say this: The "weight" of what each one says
> here is not democratically equal. It is measurable, and the unit is Mb
> of Sources).

> When Iczelion, Test Departement, Ron Thomas, and other "opening doors
> programmers" have forced the closed door to Win32 Asm programming for
> us, at that time, they simply had no other choice out of MASM, because
> NASM, SpAsm, FASM, GoAsm did not yet exist, at that time, or, at least,
> did not yet exist under the evoluated and realiable form they now are.

> So, this is not on the fault of Iczelion if MASM has first been used
> for the first Win32Asm programing. This is nothing but an error of the
> history itself, not of Iczelion and others. Actually, there is no more
> any reason for going on in that catastrophic direction. If you do the
> wrong choice, today, ... good for you ;)

> ______________________________________

> Now, coming back to:

> > ....MASM is called a
> > monopoly because almost everybody uses it, it performs as well or better
> > than any other assembler and is kept up to date by the work of Iczelion
> > and Hutch. It's annoying to be called a monopoly supporter just because
> > you chose the assembler that's going to be around after all those others
> > are just distant memories.

> > ....MASM is called a monopoly because almost everybody uses it...

> I don't use it, and i don't feel so lonely.

> >... it performs as well or better than any other assembler...

> Where are your real life Applications written with MASM? Why and how could
> they be "better" than the ones written with NASM, FASM, SpAsm, GoAsm???

> >... is kept up to date by the work of Iczelion and Hutch...


> Where are these Sources available??? What do you call "the work of
Hutch"???
> Where is an Assembly written Application written by Hutch available???

> > It's annoying to be called a monopoly supporter just because
> > you chose the assembler that's going to be around after all those others
> > are just distant memories.

> May be you could help us turning our memories distant from MASM by shuting
> up your mouth while eating your Mac-Do Cheese Burger and drinking your
> Coca-Cola, instead of missleading beginners.

> Betov, as hungry as usual...



Wed, 27 Apr 2005 18:23:12 GMT  
 nasm, tasm, masm, hla

Quote:

> Get MASM.  You have no need for anything else.  It's compatible with
> everything else being developed today.  Nasm is falling away.  Tasm is dead.
> HLA is, uh, different
> The only difference is using invoke is better, but dont work in

Just downloaded the MASM package from webster and assembled the
minimal.asm example:

    .code
start:

      szDlgTitle    db "Minimum MASM",0
      szMsg         db "  --- Assembler Pure and Simple ---  ",0

     invoke MessageBox,0,ADDR szMsg,ADDR szDlgTitle,MB_OK
     invoke ExitProcess,0
end start

When I disassemble the .exe file, I get:

=========================================================================================

                                        winmain::
00000200: 00401000: eb 33                       br.b     start
00000202: 00401002: 4d 69 6e 69 6d 75
00000208: 00401008: 6d 20 4d 41 53 4d
0000020e: 0040100e: 00                  text1:  dc.b    "Minimum MASM",0
0000020f: 0040100f: 20 20 2d 2d 2d 20
00000215: 00401015: 41 73 73 65 6d 62
0000021b: 0040101b: 6c 65 72 20 50 75
00000221: 00401021: 72 65 20 61 6e 64
00000227: 00401027: 20 53 69 6d 70 6c
0000022d: 0040102d: 65 20 2d 2d 2d 20
00000233: 00401033: 20 00               text2:  dc.b    "  --- Assembler Pure and Simple ---  ",0

00000235: 00401035: 6a 00               start:  moveq.l #0,-(sp)        
00000237: 00401037: 68 00401002                 move.l  #text1,-(sp)
0000023c: 0040103c: 68 0040100f                 move.l  #text2,-(sp)
00000241: 00401041: 6a 00                       moveq.l #0,-(sp)
00000243: 00401043: e8 00000008                 bsr.l   mbox
00000248: 00401048: 6a 00                       moveq.l #0,-(sp)
0000024a: 0040104a: e8 00000007                 bsr.l   end
0000024f: 0040104f: cc                          even    16,$cc

00000250: 00401050: ff 25 00402008      mbox:   jmp.l   (MessageBoxA)
00000256: 00401056: ff 25 00402000      end:    jmp.l   (ExitProcess)
 .
 .
 .  
                                        imp2thunk:      ; KERNEL32.dll
00000400: 00402000: 00002076            ExitProcess::   dc.l        $00002076
00000404: 00402004: 00000000                            dc.l        0

                                        imp1thunk:      ; USER32.dll
00000408: 00402008: 0000205c            MessageBoxA::   dc.l        $0000205c
0000040c: 0040200c: 00000000                            dc.l        0

=========================================================================================

Which is a very disapointing result. I had expected:

=========================================================================================

00000235: 00401035: 6a 00               start:  moveq.l #0,-(sp)        
00000237: 00401037: 68 00401002                 move.l  #text1,-(sp)
0000023c: 0040103c: 68 0040100f                 move.l  #text2,-(sp)
00000241: 00401041: 6a 00                       moveq.l #0,-(sp)
00000243: 00401043: ff 15 00402008              jsr.l   (MessageBoxA)
00000249: 00401049: 6a 00                       moveq.l #0,-(sp)
0000024b: 0040104b: ff 25 00402000              jmp.l   (ExitProcess)

=========================================================================================

MASM is a mixture of high level constructs and processor instructions, but
doesn't deserve the name "assembler". If you just want to write a program,
use a compiler. And if you want to optimize it for high speed, it is sufficient
to write some inner loops in inline assembler, but there is surely no need
to do operating system calls in assembler.  If you want to do low level
programing in order to learn how things work, then it is not acceptable
that an assembler generates processor instructions itself.



Thu, 28 Apr 2005 03:22:57 GMT  
 nasm, tasm, masm, hla


Quote:
>The debate over the use of a macro assembler versus "Pure Assembler" is a
>load of Cr*p, the code for..

>push param2
>push param1
>call function

>and

>invoke function,param1,param2

>compile identically, there is no difference except that one version has
>error checking...

Who said the opposite? With all Assemblers you can write a Macro for doing
this, and in "mine" you can even add Param Checking... On the other hand
"Pure Assembler" is perfectely do-able with MASM (see test Departement
writing style:

< http://www.*-*-*.com/ ;).

Quote:
>...Iczelion and Hutch are keeping the
>Windows.inc and related support files up to date, as a matter of fact they
>are currently working on a new version.

Amaizing! By the way, the one for SpAsm holds actually 52,603 Equates, but
i would not recommand them to use it, because it would too much slow down
the compilation process of MASM (which is already so much slow).

Quote:
>I realize that ML.exe is a microsoft
>program, I am capable of reading the EULA, I have re-read my post and am
>sorry for any misunderstandings.

Nice. By the way, i suppose you have read the sentence saying that its
usage is illegal under non M$ OSes, what means, for example, that MASM
usage will be illegal under ReactOS. And, as Hutch himself answered to
this objection, i suppose, you will also answer: "This does not matter
because you are *allowed* to *buy* it". Nice. Thanks M$!!!

Quote:
>As for other assemblers, well, there are alot of fish in the sea, but
>whatever your opinion, Microsoft is the sea, the earth and 95% of the whole
>universe so love em or not, you can't ignore them. The debate over which
>assembler is best is moot, the real debate is in the classified section of
>your newspaper, I have never seen an ad looking for NASM programmers, I
have
>seen several looking for MASM programmers.

"The world is a great sea of shit. Well, let us swim in shit and be happy
with shit, as long as M$ allows us to pay for swiming in shit".

Quote:
>What's wrong with using MASM to produce side code for other languages?

"...to produce side code for other languages", ... nothing at all. Just,
do not come and play the Assembly expert if you write your Applications
in HLL(s). Before pushing an Assembler against others, please, first, learn
real Assembly programing, second, give enough try to other Assemblers
before feeling allowed to say to a beginner which one is the good choice
to do. Do you know what are the advantages and disadvantages of GoAsm, for
example??? I am 100% sure you don't.

But, simply, "using MASM" implies *not* using free Assemblers. As there
is no technical argument for doing so, such a choice is nothing but
saying to the guys who work for free and for freedom: "{*filter*} you! We are
M$ defenders".

In order to not feel pushing my own Assembler, what could you do with
MASM that you could not do, as easily, for HLL-side Routines, say, with
NASM or FASM? Examples? Technical arguments?

Quote:
>...Is
>there a list of requirements that must be met before you can use assembler?
>I guess I missed that lecture when I went to university, THE IRREVOCABLE
>SEPERATION OF LANGUAGES 101, I'll have to check my notes. Some languages
are
>better suited to certain tasks C++ is well suited to COM, ASM is well
suited
>to small fast code, VB is well suited to short development time. It's a
>little elitest to assume that because you use MASM you're not an assembly
>programmer, again, who cares, the only measure of a programmer is the
>ability to get the job done within the specifications provided, nothing
>else.

This is your opinion. I do not share it, but i perfectely understand this
from a professional programer who has to live with "provided
specifications".
I am a retired individual programer who works with completely different
requirements. If necessary, let me clearly say that, to me, "professional"
means "poor", compared to "sunday programers", and that having followed
"university lectures" is an argument for shutting up, not for talking. So
said, if you use an Assembler as an HLL side tool, FASM is the perfect tool
for this. It is free, the Source is provided, it is clearly faster than
MASM, and its syntax is not as crazy as MASM one. It is a multi-purpose
Assembler able to do a lot of things that MASM will never be able to do,
-like having a Linux version-. So, what real argument have you for pushing
MASM against FASM? (If you are "anti-GPL", FASM author is also "anti-GPL"...
-just in case...-).

Quote:
>The importance you place on the "purity" of the language is a little
>{*filter*}retentive, get over it.

I suppose you are gay and want to convert me, don't you? Seriously, my
own opinions about what is important in programing, at a technical point
of vue, could not have any room here, and would be zero interrest for you.

Betov.



Thu, 28 Apr 2005 03:45:29 GMT  
 nasm, tasm, masm, hla

Quote:
>>MASM is a mixture of high level constructs and >>processor instructions,
but
>>doesn't deserve the name "assembler".

Remember, you don't have to use the high level constructs.  Just use mov,
call, jmp, etc.

Quote:
>>If you want to do low level
>>programing in order to learn how things work, then it is >>not acceptable
>>that an assembler generates processor instructions >>itself.

Are you implying coding in hex?  I did that way back when, but it's
perfectly acceptable to program in assembler.  Unless you want to learn how
to work with the individual opcode codings.

Quote:
>>but there is surely no need to do operating system calls >>in assembler.

Unless you want it to work right the first time.


Thu, 28 Apr 2005 05:01:44 GMT  
 nasm, tasm, masm, hla
Nils,

Differing from a few others I leave the choice of what you use up to
yourself. If you want to have a play with the most powerful and
popular Microsoft 32 bit windows assembler go to my site at
www.masm32.com and download a copy of the MASM32 project.

Don't be fooled by some of the bullsh*t you have heard, MASM can
produce anything in win32, EXE, DLL, Device drivers, VC compatible
libraries etc ... and it produces very good binary code if you learn
its syntax and write it properly.

Just plug it in correctly and run it and you have help files, a
mountain of example code, a subset of Iczelion's tutorials, code
generation, utilities etc ...

Regards and good luck with your assembly coding.




Thu, 28 Apr 2005 06:19:28 GMT  
 nasm, tasm, masm, hla

Quote:

> When I disassemble the .exe file, I get:

> =========================================================================================

>                                         winmain::
> 00000200: 00401000: eb 33                       br.b     start
> 00000202: 00401002: 4d 69 6e 69 6d 75
> 00000208: 00401008: 6d 20 4d 41 53 4d
> 0000020e: 0040100e: 00                  text1:  dc.b    "Minimum MASM",0
> 0000020f: 0040100f: 20 20 2d 2d 2d 20
> 00000215: 00401015: 41 73 73 65 6d 62
> 0000021b: 0040101b: 6c 65 72 20 50 75
> 00000221: 00401021: 72 65 20 61 6e 64
> 00000227: 00401027: 20 53 69 6d 70 6c
> 0000022d: 0040102d: 65 20 2d 2d 2d 20
> 00000233: 00401033: 20 00               text2:  dc.b    "  --- Assembler Pure and Simple ---  ",0

> 00000235: 00401035: 6a 00               start:  moveq.l #0,-(sp)
> 00000237: 00401037: 68 00401002                 move.l  #text1,-(sp)
> 0000023c: 0040103c: 68 0040100f                 move.l  #text2,-(sp)
> 00000241: 00401041: 6a 00                       moveq.l #0,-(sp)
> 00000243: 00401043: e8 00000008                 bsr.l   mbox
> 00000248: 00401048: 6a 00                       moveq.l #0,-(sp)
> 0000024a: 0040104a: e8 00000007                 bsr.l   end
> 0000024f: 0040104f: cc                          even    16,$cc

> 00000250: 00401050: ff 25 00402008      mbox:   jmp.l   (MessageBoxA)
> 00000256: 00401056: ff 25 00402000      end:    jmp.l   (ExitProcess)
>  .
>  .
>  .
>                                         imp2thunk:      ; KERNEL32.dll
> 00000400: 00402000: 00002076            ExitProcess::   dc.l        $00002076
> 00000404: 00402004: 00000000                            dc.l        0

>                                         imp1thunk:      ; USER32.dll
> 00000408: 00402008: 0000205c            MessageBoxA::   dc.l        $0000205c
> 0000040c: 0040200c: 00000000                            dc.l        0

> =========================================================================================

> Which is a very disapointing result. I had expected:

This is a joke, right?
Are you trying to trip some fools up and make them say things
without actually reading what you're writing?

I can assure you that if MASM assembled what appear to be
true-blue 80x86 instructions into 68x000 code, that would be,
well, amazing :-)

=========================================================================================

- Show quoted text -

Quote:

> 00000235: 00401035: 6a 00               start:  moveq.l #0,-(sp)
> 00000237: 00401037: 68 00401002                 move.l  #text1,-(sp)
> 0000023c: 0040103c: 68 0040100f                 move.l  #text2,-(sp)
> 00000241: 00401041: 6a 00                       moveq.l #0,-(sp)
> 00000243: 00401043: ff 15 00402008              jsr.l   (MessageBoxA)
> 00000249: 00401049: 6a 00                       moveq.l #0,-(sp)
> 0000024b: 0040104b: ff 25 00402000              jmp.l   (ExitProcess)

> =========================================================================================

> MASM is a mixture of high level constructs and processor instructions, but
> doesn't deserve the name "assembler". If you just want to write a program,
> use a compiler. And if you want to optimize it for high speed, it is sufficient
> to write some inner loops in inline assembler, but there is surely no need
> to do operating system calls in assembler.  If you want to do low level
> programing in order to learn how things work, then it is not acceptable
> that an assembler generates processor instructions itself.

Of course, another way to think of it is rather than working in a high level
language and sticking in in-line assembly, you can work in assembly
and stick in in-line HLL code.  That's what high level assemblers like
HLA, MASM, and TASM offer.

As for being no reason to make OS calls in assembler, have you ever
looked at what HLL standard libraries (especially C/C++) wind up doing?
It's absolutely disgusting all the excess code they wind up executing in
order to be "general".  Even HLA's standard library, that attempts to be
general, is usually much smaller than the excessive nonsense you get with
something like glibc.
Randy Hyde



Thu, 28 Apr 2005 13:28:34 GMT  
 
 [ 61 post ]  Go to page: [1] [2] [3] [4] [5]

 Relevant Pages 

1. TASM to NASM and/or NASM to TASM

2. MASM/TASM to NASM Converter?

3. tasm masm nasm dazm ...

4. +/- of TASM, MASM, NASM

5. MASM/TASM/NASM Testing :

6. MASM/TASM/NASM Testing 2 (1 are errors)

7. NASM - working alternative to TASM and MASM?

8. Can anyone tell me how much space I have left MASM/TASM/NASM

9. MASM v TASM v NASM v etc

10. MASM/TASM/WASM/NASM

11. a question about TASM/MASM and NASM

12. +/- of TASM, MASM, NASM

 

 
Powered by phpBB® Forum Software