home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / asm_kit / sysint.asm < prev    next >
Assembly Source File  |  1983-09-10  |  1KB  |  63 lines

  1. page 66,132
  2. ;+
  3. ;    .title sysint
  4. ; index  system interrupt call function   sysint()
  5. ;
  6. ; Usage
  7. ;    sysint(inum,&inreg,&outreg);
  8. ;
  9. ; in
  10. ;    int    inum;        ; interrupt number to execute
  11. ;    int    inreg[4];    ; input registers ax,bx,cx,dx
  12. ;
  13. ; out
  14. ;    int    outreg[4];    ; registers returned ax,bx,cx,dx
  15. ;
  16. ; Description
  17. ;    This is a system interface call to allow system intrinsic functions
  18. ;      to be called from C. Parameters are passed via the register values
  19. ;      stored in inreg for input to the system call and returned in the
  20. ;      outreg struct. The default values for the segment registers are the
  21. ;      same as C routines.
  22. ;
  23. ; status
  24. ;    ax register is returned as status
  25. ;
  26. ; bugs
  27. ;    low level internal routine must be modified to be ported.
  28. ;
  29. ; Updates
  30. ;
  31. ;    date        vers    who    description
  32. ;    15-aug-83    0001    EJK    Added documemtation
  33. ;-
  34. pgroup    group    prog
  35. prog    segment byte    public 'prog'
  36.     assume    cs:pgroup
  37.     public    sysint
  38.  
  39. sysint    proc    near
  40.     push bp     ;save bp
  41.     mov bp,sp    ;sp->bp
  42.     mov ax,[bp]+4    ;get int#
  43.     mov cs:itm+1,al ;set int#
  44.     mov si,[bp]+6    ;in struc
  45.     mov ax,[si]    ;set ax
  46.     mov bx,[si]+2    ;set bx
  47.     mov cx,[si]+4    ;set cx
  48.     mov dx,[si]+6    ;set dx
  49.     push bp     ;save bp2
  50. itm    equ  this byte    ; 'this byte' is a keyword.
  51.     int 16        ;interrupt
  52.     pop bp        ;restore bp2
  53.     mov si,[bp]+8    ;out struc
  54.     mov [si],ax    ;ret ax
  55.     mov [si]+2,bx    ;ret bx
  56.     mov [si]+4,cx    ;ret cx
  57.     mov [si]+6,dx    ;ret dx
  58.     pop bp        ;restore bp
  59.     ret        ;return
  60. sysint    endp
  61. prog    ends
  62.     end
  63.