home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / mslang / as / calc.asm < prev    next >
Assembly Source File  |  1985-05-09  |  2KB  |  78 lines

  1.            PAGE    ,132
  2.            TITLE   CALC
  3. CGROUP           GROUP   CODESEG
  4. CODESEG        SEGMENT PARA PUBLIC 'CODE'
  5.            ASSUME  CS:CGROUP,DS:CGROUP,ES:CGROUP
  6.            PUBLIC  CALC
  7.  
  8.            ORG     100H
  9.  
  10. CALC           PROC    FAR
  11.            JMP     START
  12.  
  13. ;---------------------------------------------------------------------;
  14. ;                                      ;
  15. ;                 DATA AREA                      ;
  16. ;                                      ;
  17. ;---------------------------------------------------------------------;
  18.  
  19.            DB      'INTERRUPT NUMBER ='
  20. INT_NUMBER     DB      61h
  21.  
  22. SCREEN_HANDLE  DW      0001h
  23.  
  24. MESSAGE        DB      'PEMATH is not resident',13,10
  25. MESSAGE_LEN    EQU     $-MESSAGE
  26.  
  27. TAG           DB      'PEMATH'
  28. TAG_LEN        EQU     $-TAG
  29.  
  30. ;---------------------------------------------------------------------;
  31. ;                                      ;
  32. ;                 CODE AREA                      ;
  33. ;                                      ;
  34. ;---------------------------------------------------------------------;
  35.  
  36. START:
  37. ;---------------------------------------------------------------------;
  38. ;    TEST FOR PRESENCE OF CALCULATOR                      ;
  39. ;---------------------------------------------------------------------;
  40.            SUB     AX,AX
  41.            MOV     ES,AX
  42.            SUB     BH,BH
  43.            MOV     BL,INT_NUMBER
  44.            SHL     BX,1
  45.            SHL     BX,1
  46.            MOV     DI,ES:[BX]
  47.            MOV     ES,ES:[BX+2]
  48.            ADD     DI,4
  49.            LEA     SI,TAG
  50.            MOV     CX,TAG_LEN
  51.      REPE  CMPSB
  52.            JE      CALL_CALC
  53.            MOV     BX,SCREEN_HANDLE
  54.            MOV     CX,MESSAGE_LEN
  55.            LEA     DX,MESSAGE
  56.            MOV     AH,40h
  57.            INT     21h
  58.            JMP     SHORT CALC_EXIT
  59. ;---------------------------------------------------------------------;
  60. ;    CALL CALCULATOR                              ;
  61. ;---------------------------------------------------------------------;
  62. CALL_CALC:
  63.            MOV     AL,INT_NUMBER
  64.            MOV     BYTE PTR INT_CODE,AL
  65.            DB      0CDh      ; INT
  66. INT_CODE:
  67.            DB      00h
  68.            NOP
  69.            NOP
  70.  
  71. CALC_EXIT:
  72.            INT     20h
  73.  
  74. CALC           ENDP
  75.  
  76. CODESEG        ENDS
  77.            END     CALC
  78.