First, I want to say that I've been trying to find the perfect x86 assembler for me, and NASM is the closest I've come so far. I wanted something that was simple, to the point, command-line driven, didn't come with a lot of fluff - I'm pretty satisfied that NASM is just that!
However, this might sound a little OCD, but I'll never know unless I ask and it doesn't harm anything.
I first entered the assembly language world last year with programming 8051 microcontrollers. Now, I'm trying to make the leap to x86 programming, but I'm used to the ASM51 syntax and, while I could tolerate the differences if I have to, the ASM51 syntax just makes more sense to me. Certain things are expressed very explicitly, and I greatly appreciate that.
Does anybody know off the top of their head of an x86 assembler that has syntax looking like this?
; (I'm aware that this program doesn't really do anything.
; I threw together pieces of some of my previous projects
; simply to use as an example.)
$MODR2
;---------------------------------------------------------------
; Symbol Declarations
T0EXT EQU R0
;---------------------------------------------------------------
; Interrupt Service Routines
ORG 0000H
LJMP INIT
ORG 000BH
T0ISR: INC T0EXT
RETI
;---------------------------------------------------------------
; Inline Statements
INIT: MOV IP0,#00000011B
MOV IEN0,#10000010B
MOV TMOD,#00000010B
MOV TL0,#-250
MOV TH0,#-250
SETB TR0
MOV A,#00H
MAIN: ACALL DISPLAY
ACALL ONESEC
INC A
SJMP MAIN
;---------------------------------------------------------------
; Subroutine Definitions
ONESEC: MOV T0EXT,#-250
MOV R2,#16
LOOP: CJNE T0EXT,#00H,$
MOV T0EXT,#-250
DJNZ R2,LOOP
RET
DISPLAY:MOV DPTR,#SVNSEG
MOV R2,A
ANL A,#0FH
MOVC A,@A+DPTR
MOV LSD,A
MOV A,#0F0H
ANL A,R2
SWAP A
MOVC A,@A+DPTR
MOV MSD,A
MOV A,R2
MOV DPTR,#FAHREN
RET
SVNSEG: DB 40H,79H,24H,30H,19H,12H,03H,78H
DB 00H,18H,27H,33H,1DH,16H,07H,7FH
END
Like I said: I know it's really picky, but I've come to really enjoy the little details such as the "#" prefixes for immediate values, "@" for indirect addressing, "END" to declare the end of the program, etc. Of course I can live without it, but I might as well ask! If anybody knows of something resembling what I might be looking for, I'd be very grateful!
Thanks.