I am a college student and I have been assigned the task of finding a new assembler and debugger to use for our university's Assembly Programming class.  We are currently using TASM and Turbo Debugger in a Win32 environment.

We would like to move to 32bit.  I think all projects will be console based, so using INT 80h or making a driver to use Win32 console calls is acceptable.  I have looked at various assemblers ranging from FASM, to MASM32, and NASM. I even looked at using GCC with inline assembly.  The problem is, I cannot find a 32-bit Assembler / Debugger combo that will work well together.  The assembler and debugger can be (and probably will be) separate packages. 

However, I cannot find a single debugger that correctly imports the symbols exported by the assembler.  I found one or two combinations that DID work, unfortunately they where pseudo-assemblers;  A86/D86 for example.

Has anyone taking a college Assembly class? If so, what software was used?  If not, can you recommend software that YOU use while writing assembly. IBM or AT&T syntax is acceptable.

Thank you so much for you time, please respond with any/all questions and comments.
Posted on 2006-04-14 18:13:20 by AngryLlama
I generally use NASM32, MASM32, or FASM as my assemblers. Debuggers vary on the project. For Windows I tend to use OllyDBG but WinDBG is fairly good as well. Kernel Mode Debugging I use either SoftICE or Microsoft's KMD (if I have an extra comp around). For Linux/BSD I tend to use GDB as it's always there. WinDBG has a slight added advantage to it's debugger that the symbol files can be imported as needed from msdl.microsoft.com/symbols (or something like that) using a .SYMSRV command (read the help file that comes with it) so you never have to worry about updating your symbols.

Bryant Keller
Posted on 2006-04-14 19:31:25 by Synfire
For Linux you might also want to check ALD. It was designed especially for assembly language debugging, i.e. without some unnecessary bulk like HLL support, so it may be much easier and convenient to use than GDB. The negative aspects of it IIRC: lack of support for 64bit, SSE2 and threads. But for a basic assembly programming class lack of such features probably wont be a big problem.

I personally use MASM+OllyDbg under Windows and NASM+ALD under Linux/BSD for any assembly development.
Posted on 2006-04-14 20:27:15 by arafel
Humm.. MASM and Olly was one of the combos I couldn't get to work.  Are you talking about MASM32? I couldn't find Microsoft's MASM any place.

I guess I will need to figure out how to get them to 'play nice'.

Posted on 2006-04-14 21:19:21 by AngryLlama
I'm hoping I can find a Text Book that will pair nicely with MASM too.
Posted on 2006-04-14 23:02:15 by AngryLlama
You might like to look at Jeremy Gordon's GoAsm/GoBug or FASM/Olly Debug, both have a more liberal license than MASM. MASM is only legally available as part of Visual Studio and that can be an expensive proposition, additionally the license for MASM currently only allows you to develop device drivers for Windows, any development outside that rather narrow scope is prohibitted. Though most users here ignore that fact, as a public institution your school will be required to adhere to the word and spirit of the license. As far as the restrictions on the license and costs involved, MASM is definitely not the way to go. FASM or GoAsm are much better choices.
Posted on 2006-04-14 23:55:44 by donkey
Hm, your requirement of symbolic information might make things a bit tougher... MASM is probably out of question because of it's license, but you can conside Pelle Orinius PoASM (http://smorgasbordet.com/pellesc/index.htm - not directly downloadable from there, you need to join his forums or send him a mail).

FASM/NASM are nice assemblers, but iirc they don't really support debug/symbol info.

OllyDbg is a very nice debugger, and iirc it does support .pdb symbol information... your problem will probably be finding a tool (linker) that can output .pdb :)

I can try looking a bit further into the available options once this whole easter thing is over and done with.
Posted on 2006-04-15 06:26:21 by f0dder
Well, GoAsm/GoLink support symbols in either the obj file or a pdb file and comes with it's own symbolic debugger (GoBug) that disassembles code in GoAsm format.

Posted on 2006-04-15 07:13:33 by donkey
My choice would be GoAsm/GoBug.  The fact that they are both a part of the same package makes them a good choice.  No other combination can make that claim.

Posted on 2006-04-15 07:55:45 by PBrennick

FASM/NASM are nice assemblers, but iirc they don't really support debug/symbol info.

If I remember correctly, there's some development on an IDE for FASM called FRESH. One of the features of the IDE is source level debugging. However, I am not too sure how it is like now, as I have not visited the fasm forum for a long time due to lack of time.

My favourite debugger is still ollydbg. I use with even though I code in FASM or MASM.
Posted on 2006-04-15 08:09:34 by roticv
AngryLlama, the only Assembler actually conming with full integration of all components is RosAsm:

< http://rosasm.org >

All-in-One Assembler / Debugger / Disassembler-re-Assembler / Specific Sources Editor / Resources Editors / and so on...


Posted on 2006-04-15 10:49:28 by Betov
nasm only support for:

valid debug formats for 'obj' output format are ('*' denotes default):
  * borland  Borland Debug Records

valid debug formats for 'ieee' output format are ('*' denotes default):
  * ladsoft  LADsoft Debug Records

valid debug formats for 'elf' output format are ('*' denotes default):
  * stabs    ELF32 (i386) stabs debug format for Linux

All the other formats have null debug info escept elf?.
Posted on 2006-04-15 10:55:47 by rea
I'll join the chorus for GoAsm/GoBug.  It is a great package, and will give you exactly what you are looking for.

Posted on 2006-04-15 15:19:00 by bushpilot
AngryLlama, you will easily find out RosAsm with a Google search on its Name.


PS. RosAsm is 3 Megas of Self-Compilable Assembly Source, released under GPL.
Posted on 2006-04-16 04:21:35 by Betov
Hi AngyLlama,

You should definitely check out RosAsm, it has it's limitations but is a solid package and has some very talented people who support it, that said I will always vote for GoAsm/GoBug but there are many options out there and you should give each a good look.
Posted on 2006-04-16 04:24:34 by donkey
Hint: the result is the first in google search, perhaps you can be lucky ;). (you can click I gona have lucky button).
Posted on 2006-04-16 09:58:28 by rea
Thank you, everyone, for the suggestions.  I am going to try goAsm and see where that takes me. 

Posted on 2006-04-17 22:18:10 by AngryLlama
GoASM/BUG looks good except for the license. I suppose we can make the students pay $47 a piece for the software...  We provide MSDNAA to our students, so Visual Studio and ML are 'free'.  Unfortunately, they do not provide the ease of use the Go tools do.

Has anyone dealt with multiple license for GoASM?  I will ask them if they have any sort of educational pricing.

Also - We are changing books from an older 16bit IBM assembly book to an updated book that will go into 32bit programming and possibly MMX and SSE.  Any suggestions?

Thanks again for your help.
Posted on 2006-04-18 09:59:53 by AngryLlama
Huh, license and $47? Aren't the tools free? :-s

Posted on 2006-04-18 12:09:12 by f0dder
From the GoAsm helpfile:
GoAsm - licence and distribution
You may use GoAsm for any purpose including making commercial programs. You may redistribute it freely (but not for payment nor for use with a program or any material for which the user is asked to pay). You are not entitled to hide or deny my copyright.

GoBug has different license terms.  Review them and see how it applies to you.

Posted on 2006-04-18 13:49:31 by bushpilot