1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: TASM: turbo assembler by Borland 3071d4279SBram Moolenaar" Maintaner: FooLman of United Force <[email protected]> 4*d47d5223SBram Moolenaar" Last Change: 2012 Feb 03 by Thilo Six, and 2018 Nov 27. 5071d4279SBram Moolenaar 689bcfda6SBram Moolenaar" quit when a syntax file was already loaded 789bcfda6SBram Moolenaarif exists("b:current_syntax") 8071d4279SBram Moolenaar finish 9071d4279SBram Moolenaarendif 10071d4279SBram Moolenaar 11b8ff1fb5SBram Moolenaarlet s:cpo_save = &cpo 12b8ff1fb5SBram Moolenaarset cpo&vim 13b8ff1fb5SBram Moolenaar 14071d4279SBram Moolenaarsyn case ignore 15071d4279SBram Moolenaarsyn match tasmLabel "^[\ \t]*[@a-z_$][a-z0-9_$@]*\ *:" 16071d4279SBram Moolenaarsyn keyword tasmDirective ALIAS ALIGN ARG ASSUME %BIN CATSRT CODESEG 17071d4279SBram Moolenaarsyn match tasmDirective "\<\(byte\|word\|dword\|qword\)\ ptr\>" 18071d4279SBram Moolenaar" CALL extended syntax 19071d4279SBram Moolenaarsyn keyword tasmDirective COMM %CONDS CONST %CREF %CREFALL %CREFREF 20071d4279SBram Moolenaarsyn keyword tasmDirective %CREFUREF %CTLS DATASEG DB DD %DEPTH DF DISPLAY 21071d4279SBram Moolenaarsyn keyword tasmDirective DOSSEG DP DQ DT DW ELSE EMUL END ENDIF 22071d4279SBram Moolenaar" IF XXXX 23071d4279SBram Moolenaarsyn keyword tasmDirective ENDM ENDP ENDS ENUM EQU ERR EVEN EVENDATA EXITCODE 24071d4279SBram Moolenaarsyn keyword tasmDirective EXITM EXTRN FARDATA FASTIMUL FLIPFLAG GETFIELD GLOBAL 25071d4279SBram Moolenaarsyn keyword tasmDirective GOTO GROUP IDEAL %INCL INCLUDE INCLUDELIB INSTR IRP 26071d4279SBram Moolenaar"JMP 27071d4279SBram Moolenaarsyn keyword tasmDirective IRPC JUMPS LABEL LARGESTACK %LINUM %LIST LOCAL 28071d4279SBram Moolenaarsyn keyword tasmDirective LOCALS MACRO %MACS MASKFLAG MASM MASM51 MODEL 29071d4279SBram Moolenaarsyn keyword tasmDirective MULTERRS NAME %NEWPAGE %NOCONDS %NOCREF %NOCTLS 30071d4279SBram Moolenaarsyn keyword tasmDirective NOEMUL %NOINCL NOJUMPS %NOLIST NOLOCALS %NOMACS 31071d4279SBram Moolenaarsyn keyword tasmDirective NOMASM51 NOMULTERRS NOSMART %NOSYMS %NOTRUNC NOWARN 32071d4279SBram Moolenaarsyn keyword tasmDirective %PAGESIZE %PCNT PNO87 %POPLCTL POPSTATE PROC PROCDESC 33071d4279SBram Moolenaarsyn keyword tasmDirective PROCTYPE PUBLIC PUBLICDLL PURGE %PUSHCTL PUSHSTATE 34071d4279SBram Moolenaar"rept, ret 35071d4279SBram Moolenaarsyn keyword tasmDirective QUIRKS RADIX RECORD RETCODE SEGMENT SETFIELD 36071d4279SBram Moolenaarsyn keyword tasmDirective SETFLAG SIZESTR SMALLSTACK SMART STACK STARTUPCODE 37071d4279SBram Moolenaarsyn keyword tasmDirective STRUC SUBSTR %SUBTTL %SYMS TABLE %TABSIZE TBLINIT 38071d4279SBram Moolenaarsyn keyword tasmDirective TBLINST TBLPTR TESTFLAG %TEXT %TITLE %TRUNC TYPEDEF 39071d4279SBram Moolenaarsyn keyword tasmDirective UDATASEG UFARDATA UNION USES VERSION WAR WHILE ?DEBUG 40071d4279SBram Moolenaar 41071d4279SBram Moolenaarsyn keyword tasmInstruction AAA AAD AAM AAS ADC ADD AND ARPL BOUND BSF BSR 42071d4279SBram Moolenaarsyn keyword tasmInstruction BSWAP BT BTC BTR BTS CALL CBW CLC CLD CLI CLTS 43071d4279SBram Moolenaarsyn keyword tasmInstruction CMC CMP CMPXCHG CMPXCHG8B CPUID CWD CDQ CWDE 44071d4279SBram Moolenaarsyn keyword tasmInstruction DAA DAS DEC DIV ENTER RETN RETF F2XM1 45071d4279SBram Moolenaarsyn keyword tasmCoprocInstr FABS FADD FADDP FBLD FBSTP FCHG FCOM FCOM2 FCOMI 46071d4279SBram Moolenaarsyn keyword tasmCoprocInstr FCOMIP FCOMP FCOMP3 FCOMP5 FCOMPP FCOS FDECSTP 47071d4279SBram Moolenaarsyn keyword tasmCoprocInstr FDISI FDIV FDIVP FDIVR FENI FFREE FFREEP FIADD 48071d4279SBram Moolenaarsyn keyword tasmCoprocInstr FICOM FICOMP FIDIV FIDIVR FILD FIMUL FINIT FINCSTP 49071d4279SBram Moolenaarsyn keyword tasmCoprocInstr FIST FISTP FISUB FISUBR FLD FLD1 FLDCW FLDENV 50071d4279SBram Moolenaarsyn keyword tasmCoprocInstr FLDL2E FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FMUL FMULP 51071d4279SBram Moolenaarsyn keyword tasmCoprocInstr FNCLEX FNINIT FNOP FNSAVE FNSTCW FNSTENV FNSTSW 52071d4279SBram Moolenaarsyn keyword tasmCoprocInstr FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSCALE 53071d4279SBram Moolenaarsyn keyword tasmCoprocInstr FSETPM FSIN FSINCOM FSQRT FST FSTP FSTP1 FSTP8 54071d4279SBram Moolenaarsyn keyword tasmCoprocInstr FSTP9 FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMI 55071d4279SBram Moolenaarsyn keyword tasmCoprocInstr FUCOMPP FWAIT FXAM FXCH FXCH4 FXCH7 FXTRACT FYL2X 56071d4279SBram Moolenaarsyn keyword tasmCoprocInstr FYL2XP1 FSTCW FCHS FSINCOS 57071d4279SBram Moolenaarsyn keyword tasmInstruction IDIV IMUL IN INC INT INTO INVD INVLPG IRET JMP 58071d4279SBram Moolenaarsyn keyword tasmInstruction LAHF LAR LDS LEA LEAVE LES LFS LGDT LGS LIDT LLDT 59071d4279SBram Moolenaarsyn keyword tasmInstruction LMSW LOCK LODSB LSL LSS LTR MOV MOVSX MOVZX MUL 60071d4279SBram Moolenaarsyn keyword tasmInstruction NEG NOP NOT OR OUT POP POPA POPAD POPF POPFD PUSH 61071d4279SBram Moolenaarsyn keyword tasmInstruction PUSHA PUSHAD PUSHF PUSHFD RCL RCR RDMSR RDPMC RDTSC 62071d4279SBram Moolenaarsyn keyword tasmInstruction REP RET ROL ROR RSM SAHF SAR SBB SGDT SHL SAL SHLD 63071d4279SBram Moolenaarsyn keyword tasmInstruction SHR SHRD SIDT SMSW STC STD STI STR SUB TEST VERR 64071d4279SBram Moolenaarsyn keyword tasmInstruction VERW WBINVD WRMSR XADD XCHG XLAT XOR 65071d4279SBram Moolenaarsyn keyword tasmMMXinst EMMS MOVD MOVQ PACKSSDW PACKSSWB PACKUSWB PADDB 66071d4279SBram Moolenaarsyn keyword tasmMMXinst PADDD PADDSB PADDSB PADDSW PADDUSB PADDUSW PADDW 67071d4279SBram Moolenaarsyn keyword tasmMMXinst PAND PANDN PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD 68071d4279SBram Moolenaarsyn keyword tasmMMXinst PCMPGTW PMADDWD PMULHW PMULLW POR PSLLD PSLLQ 69071d4279SBram Moolenaarsyn keyword tasmMMXinst PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW PSUBB PSUBD 70071d4279SBram Moolenaarsyn keyword tasmMMXinst PSUBSB PSUBSW PSUBUSB PSUBUSW PSUBW PUNPCKHBW 71071d4279SBram Moolenaarsyn keyword tasmMMXinst PUNPCKHBQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD 72071d4279SBram Moolenaarsyn keyword tasmMMXinst PXOR 73071d4279SBram Moolenaar"FCMOV 74071d4279SBram Moolenaarsyn match tasmInstruction "\<\(CMPS\|MOVS\|OUTS\|SCAS\|STOS\|LODS\|INS\)[BWD]" 75071d4279SBram Moolenaarsyn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABCGLESXZ]\>" 76071d4279SBram Moolenaarsyn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABGL]E\>" 77071d4279SBram Moolenaarsyn match tasmInstruction "\<\(LOOP\|REP\)N\=[EZ]\=\>" 78071d4279SBram Moolenaarsyn match tasmRegister "\<[A-D][LH]\>" 79071d4279SBram Moolenaarsyn match tasmRegister "\<E\=\([A-D]X\|[SD]I\|[BS]P\)\>" 80071d4279SBram Moolenaarsyn match tasmRegister "\<[C-GS]S\>" 81071d4279SBram Moolenaarsyn region tasmComment start=";" end="$" 82071d4279SBram Moolenaar"HACK! comment ? ... selection 83071d4279SBram Moolenaarsyn region tasmComment start="comment \+\$" end="\$" 84071d4279SBram Moolenaarsyn region tasmComment start="comment \+\~" end="\~" 85071d4279SBram Moolenaarsyn region tasmComment start="comment \+#" end="#" 86071d4279SBram Moolenaarsyn region tasmString start="'" end="'" 87071d4279SBram Moolenaarsyn region tasmString start='"' end='"' 88071d4279SBram Moolenaar 89071d4279SBram Moolenaarsyn match tasmDec "\<-\=[0-9]\+\.\=[0-9]*\>" 90071d4279SBram Moolenaarsyn match tasmHex "\<[0-9][0-9A-F]*H\>" 91071d4279SBram Moolenaarsyn match tasmOct "\<[0-7]\+O\>" 92071d4279SBram Moolenaarsyn match tasmBin "\<[01]\+B\>" 93071d4279SBram Moolenaar 94071d4279SBram Moolenaar" Define the default highlighting. 9589bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 96071d4279SBram Moolenaar 97f37506f6SBram Moolenaarhi def link tasmString String 98f37506f6SBram Moolenaarhi def link tasmDec Number 99f37506f6SBram Moolenaarhi def link tasmHex Number 100f37506f6SBram Moolenaarhi def link tasmOct Number 101f37506f6SBram Moolenaarhi def link tasmBin Number 102f37506f6SBram Moolenaarhi def link tasmInstruction Keyword 103f37506f6SBram Moolenaarhi def link tasmCoprocInstr Keyword 104f37506f6SBram Moolenaarhi def link tasmMMXInst Keyword 105f37506f6SBram Moolenaarhi def link tasmDirective PreProc 106f37506f6SBram Moolenaarhi def link tasmRegister Identifier 107f37506f6SBram Moolenaarhi def link tasmProctype PreProc 108f37506f6SBram Moolenaarhi def link tasmComment Comment 109f37506f6SBram Moolenaarhi def link tasmLabel Label 110071d4279SBram Moolenaar 111071d4279SBram Moolenaar 112*d47d5223SBram Moolenaarlet b:current_syntax = "tasm" 113b8ff1fb5SBram Moolenaar 114b8ff1fb5SBram Moolenaarlet &cpo = s:cpo_save 115b8ff1fb5SBram Moolenaarunlet s:cpo_save 116