汇编源码系列之calc2008-04-30这个都是过去DOS时代的汇编源码,虽然已经过去了,但是对于学习汇编还是有帮助的,汇编语言只是程序员一门基础语言,大多人掌握即可,不一定要深入研究.......       PAGE  ,132
      TITLE  CALC
CGROUP      GROUP  CODESEG
CODESEG    SEGMENT PARA PUBLIC "CODE"
      ASSUME CS:CGROUP,DS:CGROUP,ES:CGROUP
      PUBLIC CALC
      ORG   100H
CALC      PROC  FAR
      JMP   START
;---------------------------------------------------------------------;
;                   ;
;         DATA AREA           ;
;                   ;
;---------------------------------------------------------------------;
      DB   "INTERRUPT NUMBER ="
INT_NUMBER   DB   61h
SCREEN_HANDLE DW   0001h
MESSAGE    DB   "PEMATH is not resident",13,10
MESSAGE_LEN  EQU   $-MESSAGE
TAG      DB   "PEMATH"
TAG_LEN    EQU   $-TAG
;---------------------------------------------------------------------;
;                   ;
;         CODE AREA           ;
;                   ;
;---------------------------------------------------------------------;
START:
;---------------------------------------------------------------------;
;  TEST FOR PRESENCE OF CALCULATOR           ;
;---------------------------------------------------------------------;
      SUB   AX,AX
      MOV   ES,AX
      SUB   BH,BH
      MOV   BL,INT_NUMBER
      SHL   BX,1
      SHL   BX,1
      MOV   DI,ES:[BX]
      MOV   ES,ES:[BX+2]
      ADD   DI,4
      LEA   SI,TAG
      MOV   CX,TAG_LEN
   REPE CMPSB
      JE   CALL_CALC
      MOV   BX,SCREEN_HANDLE
      MOV   CX,MESSAGE_LEN
      LEA   DX,MESSAGE
      MOV   AH,40h
      INT   21h
      JMP   SHORT CALC_EXIT
;---------------------------------------------------------------------;
;  CALL CALCULATOR               ;
;---------------------------------------------------------------------;
CALL_CALC:
      MOV   AL,INT_NUMBER
      MOV   BYTE PTR INT_CODE,AL
      DB   0CDh   ; INT
INT_CODE:
      DB   00h
      NOP
      NOP
CALC_EXIT:
      INT   20h
CALC      ENDP
CODESEG    ENDS
      END   CALC