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

END