home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_09_01 / 9n01058a < prev    next >
Text File  |  1990-11-15  |  993b  |  48 lines

  1.  
  2. ; Unless declared otherwise all
  3. ; values are type short
  4. ; setjmp(array pointer) : set
  5. ; environment of 3 integers,
  6. ; returns 0
  7. ; array -> bp of calling function
  8. ;          sp current
  9. ;          address of setjmp return
  10. PUBLIC setjmp
  11. setjmp          PROC NEAR
  12.         ;
  13.         mov     bx,sp
  14.         mov     ax,ss:[bx]
  15.         mov     bx,ss:[bx+2]
  16.         mov     ss:[bx],bp
  17.         mov     ss:[bx+2],sp
  18.         mov     ss:[bx+4],ax
  19.         xor     ax,ax
  20.         ret
  21.         ;
  22. setjmp ENDP
  23.  
  24. ; longjmp(array pointer, constant) :
  25. ; non local goto, returns constant
  26. PUBLIC longjmp
  27. longjmp         PROC NEAR
  28.         ;
  29.         xor     ax,ax
  30.         mov     bp,sp
  31.         mov     bx,[bp+2]
  32.         mov     ax,[bp+4]
  33.         or      ax,ax
  34.         jne     L1
  35.         inc     ax
  36. L1:
  37.         mov     bp,ss:[bx]
  38.         mov     sp,ss:[bx+2]
  39.         mov     cx,ss:[bx+4]
  40.         mov     bx,sp
  41.         mov     ss:[bx],cx
  42.         ret
  43.         ;
  44. longjmp ENDP
  45.  
  46.  
  47.  
  48.