Like all the posts in this category, I'm a newbie... I'm a bit confused as of what to use and what are the differences between the different assemblers and linkers. I tried Masm from Microsoft and "upgraded" to Masm32 by Hutch ,seen the page on the multi-platform Nasm, heard of Tasm ($) from Borland, tried Spasm a little and then I stumbled on a file with Walk32 from Sven who uses the original ml from microsoft. I have a lot of projects, but I would like to have a good start. I know all of these compile on Windows 9x, some offer an easy way for unicode and I've seen most of the tutorials. Can somebody hint me a bit more on these different choices?
Definately, all the choices are enough to make your head spin. But, for the most part, your preferences in programming style can weed out most of them. For instance, SpAsm is totally free (including the EULA), however it requires that you practically learn a different language. But, much like with DJGPP's Assembler, it's only skin deep, and at the core, it's still x86 Assembly. I won't say that I know every piece and combination of Assembler and library out there works as well as another. No one can say that because there are hundreds of Assemblers that no one uses or talks about (such as Pass32 which does 32 bit DOS and Windows). However, there are some advantages and disadvantages to the most popular and talked about Assemblers. MASM is by far the most used and most appreciated Assembler. It has a lot of good points, such as high level language macros (.if, .elseif, .while, invoke, etc.), as well as being more or less flexible. It's downside is, for starters, it's got a mile long EULA attached to it, that states if you want to sell anything you write, you have to give them your first born child. :) Also, MASM32 will only compile Win32 programs. You have to find or download a DOS linker to do any non-Windows programming. And even then, it's only DOS or 32 bit Windows. TASM is the second choice of most Windows programmers out there, for very good reasons. First, it's almost totally compatible with basic MASM code (meaning no high level language macros), and (despite what some will say) does have some support for Object Oriented coding. It also allows DOS and Windows programming, as well as 16 bit Windows programming. It's drawbacks are that, first, it costs a near fortune (unless you find a copy online, in which case, don't get caught! :)). The second is that, it doesn't support high level language macros. This is often too big of a sacrifice for people, hence why MASM is the number 1 choice. NASM is probably the third choice, only because VisualAssembler was being based off of it, back when it was being worked on. Also, it supports MASM and Intel standard assembly code, and it's multiplatform. (But since this is for Windows programming, that's not really a major advantage. :)) It's disadvantages are that, first, not many people use it...therefore it has limited support. The second is that, it's basically command line driven. TASM is too, but with the Visual tool for TASM available on Iczelion's site, it's a little easier to use. SpAsm is probably last in the line of popular Assemblers. It compiles assembly programs well, and in Win32 just fine. However, due to its highly unusual structure for determining pointers, not many people are willing to use it. This new structure may be faster to type, but people are always cautious of what they're not familiar with. As for WALK32, I can't say anything about it really. I've not had any experience in it, although I did know it existed for several years. Anyway, it might be a better idea for you to personally look over the way the assemblers work, and what they can and (most importantly) cannot do, then make the choice for yourself. The important thing is that you don't let any one person's views push you in a direction. You must make the choice on your own. And also, don't forget to search online for any Assemblers not listed here (like Pass32 for instance). They may have exactly what you're looking for.
I have been programming in ASM for a while and in general for much longer - I recently switch to MASM from NASM, because it lacks support and most examples are in MASM. I need to use MASM as default to be sharp on reading examples that are in MASM. Similarly for C. I like the syntax of SpASM, but again it's so hard to go it almost alone :)
Silas, It really depends what you want to write, if its win32 code, the technical advantages of MASM are overwhelming, it can write anything in windows from PE EXE & DLL files, VxDs if u use the DDK for the OS you need, DOS 16 bit EXE/COM files if you use the older OMF linker, it can easily handle very large include files without TASM's "out of hash space error", it has very extensive include files without having to endlessly write your own, it is truly multi-modular if you want to write that type of code. TASM is past it and not supported by Borland/Inprise any longer. NASM is well suited for LINUX asm and has a very good pre-processor but it does not have stack automation and is a poor performer in win32. SPASM is betov's toy and to stop him whinging, its worth a try if you have the time to play with it, it is original and different and if you nag him with LOTS of feedback, he may turn it into a real assembler that can handle modules, include files and large projects. I work in MASM because it has the performance and can recommend it if you want to write normal win32 code. You will find that the MASM32 project will get you up to spoeed a lot faster than the rest and you can then branch to whatever code you like. Regards, email@example.com
Where can i find that old OMF linker? Is it free too? How would i assembly my DOS programs and then link them... meaning what commands should i pass?
John, If you go to Iczelion's site and go to the downloads page, LINK 5.63 is there. I think if you run the old link with /? that it will display the options for you, it is a different syntax to the later COFF linkers. Regards, firstname.lastname@example.org This message was edited by hutch--, on 1/26/2001 2:16:35 AM
Not so small debate: The choice is between culture freedom and international crime camp. As i do not see any possibility from the Devil camp to prevent us from working for free, i think, we can consider ensured, that there is no futur out of the Open Source mouvement. (This does NOT mean that you can no more earn money with Apps. Just, instead of selling Apps, you sell services and book documentations + Open Source and associated Commercial Apps can live together). So, the choice among available Win32 Assemblers is: NASM, SpAsm, Pass32. Pass32 is not Open Source because, the way it is written, actually, would make its sources of little help, but when Dieter will turn it 32 Bits, i hope he will make it Open too... Actually, Dieter is finishing a Pascal Compiler. He will go back to Pass32 when over; hope soon... http://www.geocities.com/SiliconValley/Bay/3437/ SpAsm is working fine, but will remain under continuous developement, at least, one more year. This may implies some disagreaments for users, despiting my efforts to ensure each developement step. http://betov.free.fr/SpAsm.html NASM would be the reference Assembler, if any. The fact that Visual Assembler Project seems dead, actually, is nothing but the reflect of what the detestable Win32 world is with people like Hutch and Randy Hide. Things will change as soon as Reactos will be available with a 'public usable' release. There is no chance MASM32 be ever provided with Reactos tools pack. SpAsm and NASM will. http://www.cryogen.com/Nasm/ Learning MASM is spoiling time with a no futur and wrong syntax tool. betov.
modesty never killed anyone now, did it :rolleyes: what's with all the anger here? Should I open a 'Fight Club' forum :grin:
Hiroshimator, No need, betov is our local Mr. Nice Guy, we need people with original ideas and his development of SPASM is one of the good things around, when he turns it into a REAL assembler someone may even end up using it. :) I am much of the view that in win32, masm will not have any real competition in the near future, it is just too powerful and it has had the same syntax for many years so the MASM you learned in 1990 is still useful to you in 2001. Now if it means that Randy and myself are the reincarnates of Satan himself, working in secret for the evil empire with a direct hotline to Bill Gates in Hades, wreaking diabolical techniques for win32, the answer is to be in it while its going. I suggest that it makes more sense that people who work to make assembler accessible to as many as possible are more pragmatic than diabolical, MASM is the latest and most powerful assembler in win32, Windows is the most popular and most bad mannered operating system around at the moment so gearing for other stuff that occupies less than 1% of the total PC market is a waste of time. Regards, email@example.com
To that, I disagree, Hutch. MS Windows may be taking the PC market by storm, but will it stay that way? Murphy's law says that it won't. I'm too much of an optimist to say learning Windows programming is a waste of time, because Linux is on the move. It isn't, really. However, learning other OS's and making code that's portable from one operating system to another is not a waste of time. In fact, it's very future concious. MS's new operating system will require that people actually call Microsoft to get a new OEM number every time they upgrade hardware, or need to reinstall. Every ****** time! That will be one (thousand) times more often than a lot of people will be willing to do. So, in fact, learning Linux now and how to program in it may not be that bad of an idea. In the techno world, the present is already the past.
yes and if MS pulls this through then windows 2000 is the last MS OS that I install, no kidding.
I am knock down you seem to ignore what is ReatOS and think aam talking of Linux. ReactOS is at: http://reactos.com/ betov.
I don't think poeple are going to take that lightly. I can't imagine microsoft pulling somthing like that off. if somthing like that happens, somebody is going find some way around it! :) I HOPE! Or I going to have to learn linux again. :o
Not only the force of the intelligent people here, but all over the web - won't let MS get away with this kind of business. The world is not held hostage by Windows :) We impower and make Windows what it is with our use of it. Those who program on Windows give it substance beyond it's worth. I don't think we are a mindless flock of sheep being hurded by MS.
I'm always surprised when I see posts like this go on so long, with what starts as a purely technical question for some advice becomes a political forum for the downtrodden masses to grab their pitchforks, rise up, storm the castle and dethrone the King. Well, taint gonna happen. No, MS is not going to have a number you must call to change your configuration settings. Don't be silly. Pacific rim countries with a more cavalier attitude towards intellectual property rights mass stamping CD roms that cost them 10 cents wholesale with the new copy of Windows(TM)2001 is their real target here. That and the fortune 500 company that outfits their entire east coast division off a single retail copy of MS Office. No Department of Justice will Balkanize Microsoft. Microsoft is on top for simple reasons, none of which has to do with evil intent. They are on top because they are decently good. Sure, problems exist. But when you see the vast array of past DOS 1.0 through Windows 2000 software that still runs just fine on should jump up and applaud. They have evolved a dimwit simple disk access package to a multitasking multimedia showcase. One capable of doing serious work from someone's desktop to throughout the enterprise. They sell a decent product at very a low price. Period. That is why they are successful. And they stay successful by constantly improving this product (though I too might join the debate over which features are truly an improvement). And they are the defacto monopoly for the same reason you can not go to the store and buy your choice of 8-track music tapes. Or a new video for your Betamax VRC. Markets will see-saw to one victor, oft by chance (which is mostly why VHS beat Beta). So while you very smart people are off debating the most pedantic of points with each other, let me tell you what Microsoft is really up to (and this is not original with me): Windows is not the operating system. Windows is the bootstrap loader for Office. OFFICE is the OS. And Visual Basic is the API.
Sad to say, the evil empire will be with us for some time yet but they are in trouble, the DOJ has never lost in the long term yet, Standard Oil, IBM etc ... With such a massive advantage in monopoly terms, there is no general purpose OS on the horizon and there will not be for some time to come. Apple have collapsed to the market position they deserve and linux is still put together by a bunch of well meaning hicks who have yet to learn what professional performance means, if linux does get going, it will be the combined greed of Borland/Corel that will do it. Microsoft are like any other large American corporation, they will fight to hold their market share at any expense and will try and destroy whatever gets in the road on their way out. Now we all know that Bill Gates and Steve Ballmer "sitteth at the left and right hand of Satan himself" and the ancient diabolicus directly manipulates them to do his evil biddings. It is simply not the case that those who write in modern MASM have sold their soul (and asshole) to the evil empire like the rest who write in VB, VC++ VJ++ etc.. MASM is a good vehicle for many people to write current 32 bit assembler where TASM is past it, NASM is linux and the rest are "botique" assemblers. The big win is not in the short term but in the longer term where thousands of programmers are writing in MASM because it can be obtained for free and legally. The processors of the future will probably be very different animals and none of the present notation will be of much use but the years of practice writing a current well known dialect of assembler will come back to those who bothered rather than just going down the wide and easy road to destruction. A good friend of mine has this story, Q. What does a C programmer say to an ADA(tm) programmer ? A. I will have onions with my french fries please. Whether you accept that C will last forever or not, ASM has been around longer so there is value in learning something that will remain useful to you in a future world. The fundamental logic will remain useful in the next generation of computers which will probably be far different to what most expect. Now "open source" is another animal again, a self feeding, self inflicting whore that feeds on the work of other people. The world of modern computing would not be here if it was an open source world, development costs in manhour terms would have killed it long ago. Can you imagine the commercial world holding its breath for Joe Blogs in Lower Botswanaland while he finished the drivers for a SCSI HDD or similar ? A commercial world in software can live comfortably with true freeware and many commercial programmers write freeware as well for the general public to use. This is a good technique for most as the freeware is usually in the class of commercial software technically and often better. I am still fascinated by people who ask for source code that may have hundreds to thousands of hours invested in it, this is basically the model of the GNU world, try and get the results of someone elses work without getting off their ass and writing some decent code. Ernie's point is an interesting one in relation to the OFFICE operating system, knowing the commercial realities is being one step closer to being in control of your own programming world, dreaming about something that will never get off the ground is a waste of time. Regards, firstname.lastname@example.org