Is there a reason why MS has done this to only the assembly
programmers? but yet you can get Visual Studio free with a
better LICENSE?

I paid for Visual Studio, but now it's free, that alone is a slap in the face.
And now their is limits on only the assembly programmers.

I am not sure why this is, But I myself think it's time I moved
on to another assembler.

MASM was good, but it's the principle and not the money really.
So now my next question, is there a good assembler that is
like masm so I don't have to struggle with syntax that I can
move too?

Zcoder....
Posted on 2006-06-14 06:45:34 by Zcoder

So....as for the copyright issue..
Can I use Hutch's MASM9 to generate commercial program?If I use Hutch's MASM9 to any generate commercial program,
should I ask Microsoft's permission before I sell my program?
If I sell my program without MS's permission, will I violate the copyright law?


I think that the only illegal (because Microsoft does not permit to redistribute them) parts of the MASM32 package are a few binaries in the bin folder - ml.exe, link.exe, rc.exe and a few accompanying .dll files, but you can get those files elsewhere in a perfect legal way: Kernel Mode Driver Framework 1.0/1.1 or any other previous DDK (Win98DDK, WinNT4 DDK). Note that Win2000 DDK in the EULA restricts its use to "design, develop and test drivers", while Win98DDK, WinNT4 DDK and XPDDK and later (KMDF 1.0/1.1) do not have such restriction. I haven't noticed any "for non-commercial use only" notice in any of those DDKs EULA.
Posted on 2006-06-14 08:56:58 by Morris
Several good non-commercial assemblers are currently available, each of them with syntax similar to masm.
These include, but are not restricted to, PoASM, FASM, NASM
If I were you, I'd probably look closely at FASM.
Posted on 2006-06-14 09:35:01 by Homer
As I understand it, PoASM is closest to MASM in terms of syntax and capability (but I haven't checked them all out too thoroughly).

Ossa
Posted on 2006-06-14 09:47:35 by Ossa
Poasm is allmost compatible with Masm. Plus, it has very powerfull features that doesn't exist in Masm. The major ones :
- INCBIN to include binary files
- Support for C style strings.
- Auto-declaration of external functions ( You don't need to declare a function executed by call )
- Support for the fastcall convention
Posted on 2006-06-14 11:29:12 by Vortex
Vortex,
Could you explain about the Support for C style strings.

Zcoder....
Posted on 2006-06-14 11:45:14 by Zcoder
Hi Zcoder,

Poasm supports C style strings with no NULL terminator and you can use C escapes to simplify coding :

.model flat,stdcall
option casemap :none
option cstrings:on    ; enable C string escapes

include    \poasm\include\kernel32.inc
include    \poasm\include\plib.inc

includelib  \poasm\lib\kernel32.lib
includelib  \poasm\lib\plib.lib

.data

message    db 'This is a Poasm demo\n\tHello world!' ; no need of NULL terminator
                                                      ; this is C style string

.code

start:

    invoke  StdOut,ADDR message
    invoke  ExitProcess,0

END start
Posted on 2006-06-14 12:09:33 by Vortex
i would not say such c-style is good thing - it is often i'm using strings where next is continue of previous, and zero between them will broke this string. db should be db. also, what about mixed data in db sequence, or if i wish to use pascal-type string without termination zero? if this c-style string option can be switched off it will be just inconvenience for somebody...
this thing should be implemented via separate keyword or macro.
Posted on 2006-06-15 02:11:57 by Shoo
its a matter of personal taste
Posted on 2006-06-15 03:31:44 by comrade
at least it is not standart. why 0 and not "$"?
Posted on 2006-06-15 03:57:01 by Shoo
PoASM, FASM sound good because I like totally free Assembler.
But I wonder their capability of dealing with OOP, like OBJASM. If they can't then how can we write COM programs in PoASM or FASM?
Posted on 2006-06-15 18:49:52 by guidry
Either way it sound like a lot of work to get ObjAsm working under a different assembler (but I might be wrong here - homer or biterider would have to confirm or deny this). From what I have seen though, PoASM would be significantly easier to switch to than FASM.

Ossa
Posted on 2006-06-15 20:35:23 by Ossa
I was thinking more on the lines of GoAsm
it is really not that far away from masm, but yet far enough to
be differnet and not portable to masm without editing alot.

This makes it a good choice.

Zcoder....
Posted on 2006-06-16 07:55:50 by Zcoder

... GoAsm ... not portable to masm without editing alot.

This makes it a good choice.


Huh??? Surely a good choice is an assembler where you don't have to change a lot?

Ossa
Posted on 2006-06-16 08:02:44 by Ossa
Ossa,

I am no longer supporting MASM. If Microsoft will give Visual Sudio and the likes out free
after I paid ALOT for Mine copy, and then put limits on MASM that is a slap in the face,
when I use both C and assembly in one project at times.

So I want to make sure any code I write is not completely
portable to that assembler.

Zcoder...
Posted on 2006-06-16 08:10:10 by Zcoder

message    db 'This is a Poasm demo\n\tHello world!'


Hmm, this fragment does not look MASM-compatible.  MASM uses "!" as the escape character.  How compatible is this new assembler to MASM, again?  Dose it support non-Win32 platforms?  If so, I want to try it out, too.
Posted on 2006-06-16 14:41:35 by Starless
You can turn C-string support on/off at the poasm commandline.
Posted on 2006-06-16 14:48:11 by f0dder

i would not say such c-style is good thing - it is often i'm using strings where next is continue of previous, and zero between them will broke this string. db should be db. also, what about mixed data in db sequence, or if i wish to use pascal-type string without termination zero? if this c-style string option can be switched off it will be just inconvenience for somebody...
this thing should be implemented via separate keyword or macro.


if you will notice he used:

option cstrings:on    ; enable C string escapes


As you can see in his example. C strings are off by default, but can be enabled. Also, if you wish to create a null terminated list then use something like:


myList db "Item1"
        db "Item2"
        db "etc"


or the much more C appropriate:


myList db "Item1\0Item2\0etc"


For pascal string termination, just don't turn on the cstring option.


Dose it support non-Win32 platforms?  If so, I want to try it out, too.


That I know of, it's capable of creating DOS/Win executables (not linux, etc) and supports Intel and ARM processors (not sure about others).


I am no longer supporting MASM. If Microsoft will give Visual Sudio and the likes out free after I paid ALOT for Mine copy, and then put limits on MASM that is a slap in the face, when I use both C and assembly in one project at times.


Note that if you have a commercial license agreement with Microsoft (ie you paid for your copy) then the free versions limitations do not apply to you unless microsoft specifically states so. Commercial licenses superceed those of evaluation ware and freeware licenses. Note that this is dependant on the fact you actually are using the version of the software which is under said commercial license agreement. I'm not a lawyer but about half of my friends are and I hear this kinda stuff all the time :)

Sorry for doing mass quoting, but I've been working alot lately and I'm just now getting a chance to get caught up :sad:

Regards,
Bryant Keller
Posted on 2006-06-16 18:30:38 by Synfire
CSTRINGS has the off option too :idea:
OPTION CSTRINGS:{ON|OFF}

what i like also is the dw dumper for strings
so you can write something like this:
option cstrings:on
db "Hello Asm Community\r\n\0"
option cstrings:off
db "Hello Asm Community",13,10,0
option cstrings:on
dw "Hello Asm Community\r\n\0"
option cstrings:off
dw "Hello Asm Community",13,10,0
Posted on 2006-06-17 19:48:07 by drizz