Sample procedure using NOLANGUAGE (assembly) language specifier
ideal model small ; Code is NEAR stack 200h ; Data and stack in DGROUP
CODESEG
proc demo_asm arg a:word, b:dword:2, d:byte = arglen ; arglen = 12 local x:dword, y:word:2 = localspc ; localspc = 8 push bp ; Must set up BP since no mov bp,sp ; language is in effect sub sp,localspc ; Must set up local stack since ; ; no language is in effect push ds mov [word low x],sp ; [dgroup:bp-04] mov [y],arglen ; [dgroup:bp-08] mov ax,[a] ; [dgroup:bp+04] les di,[b] ; [dgroup:bp+06] mov dl,[d] ; [dgroup:bp+14] mul dl stosw ; [ Useful code omitted ] pop ds mov sp,bp ; Clean up local stack pop bp ; Clean up stack RET ; NEAR RETurn in small model endp
; Note: Turbo Assembler doesn't generate procedure prolog or epilog ; code in NOLANGUAGE procedures (except size of RET). ; The USES directive cannot be used in NOLANGUAGE procedures. ; The extended CALL syntax cannot be used to call NOLANGUAGE ; procedures, unless the language specifier is overridden, e.g. ; call demo_asm Pascal, ax,ds si,es di,cx ; No type checking