Interestingly enough, I also bought a86/D86, and have found it to be the best assembler/disassembler I've ever found for dos.  I ran across it after (mostly) trying to use debug for things, so it was a welcome relief.  I still use it when working on dos things, which admittedly isn't very often these days, but at least it still works, and still does what's needed.

Of course, take this with a grain of salt, since I'm an intermediate asm programmer (at best), and it takes me many hours to get anything complicated untangled when looking at asm code, which is why I don't use it much, but there's sometimes when nothing else can do the job as well, so <shrug>

Masm, Tasm, and others all have their own syntax which confuses me more than helping.  I find debug and A86 fairly straightforward, which is why I still like those methods when working with asm code.


On 7/1/2022 11:58 AM, Bret Johnson wrote:
Santiago:

I agree pretty much with ECM.  The best way to learn is to look at the code 
someone else has written and try to understand it.  Unfortunately, most ASM 
coders aren't very good at comments/documentation, and you really need the 
comments to help you figure things out.  Looking at uncommented code doesn't 
seem to help me very much -- I need to try and figure out how the coder was 
thinking, not just the result of the thinking.

I put LOTS of comments in my code -- I'm sure at least some people think too many.  Almost every line of the source has 
a comment, and each "subroutine" has a comment header similar to what ECM has (but my "style" is 
different than ECM's).  The comment header includes details about what the subroutine does, its inputs and outputs, and 
what it may change.  The header MAY also include the "context" of when and where the subroutine should get 
used, and why the subroutine even exists at all (especially if it is there to address some "special" 
situation).  For example, most of my programs are TSR's and in the most recent versions I'm working on the programs can 
use different kinds of memory: conventional, upper, Expanded (EMS), and/or Extended (XMS, which I access through a DOS 
Protected Mode Services or DPMS server).  I have comments to try and explain why I do something that requires a special 
consideration for one of the different types of memory.  An example of this would be that you NEVER want a stack to use 
Expanded memory, so sections of the code related to the stack need to take that into account and should make some 
comment about it.

When I first started (a LONG time ago), modern assemblers like NASM & FASM didn't exist, 
and I didn't like MASM (though it was and still is kind of "the standard" I find it 
confusing), so I ended up buying A86/A386 from Eric Isaacson.  Unfortunately, Eric hasn't 
updated those in a long time and it's not possible to do large projects with them because 
they don't take advantage of extended or expanded memory.  I've since switched to NASM, but I 
think FASM is also pretty good, and they're both free (unlike A86/A386).

I've got a couple of books, but really the only "fixed" resource I use is Ralf 
Brown's Interrupt List (RBIL).  I've found looking at other people's actual production 
code is the best way to learn things.

I also think the best way to get started is to actually write a small but 
useful program from scratch -- a program that you will actually use when you 
get done.  Don't make it try to do too much -- just something relatively 
simple.  The very first program I wrote was a simple version of JOYKEYS, a 
program that allows you to use a Joystick with almost any DOS program.  The 
first version was pretty basic, and it's changed a lot over the decades 
compared to how it started.  There are lots of things you need to understand 
(memory, I/O, Interrupts, BIOS, DOS, etc.) to even write a simple program.  The 
ASM part of it, while pretty complicated, is not the hard part.  The hard part 
is figuring out WHY you do (or don't do) certain things.


_______________________________________________
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user

_______________________________________________
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user

Reply via email to