home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / asm_kit / hello.asm < prev    next >
Assembly Source File  |  1984-03-04  |  3KB  |  81 lines

  1.          NAME      HELLO
  2.          PAGE      55,132
  3.          TITLE     'HELLO --- PRINT HELLO ON TERMINAL'
  4. ;
  5. ; HELLO UTILITY TO DEMONSTRATE VARIOUS PARTS
  6. ; OF A FUNCTIONAL ASSEMBLY LANGUAGE PROGRAM,
  7. ; USE OF SEGMENTS, AND A PC-DOS FUNCTION CALL.
  8. ;
  9. ; RAY DUNCAN, SEPTEMBER 1983
  10. ;
  11.                              ;SHOW USE OF SOME EQUATES:
  12. CR       EQU       0DH       ;ASCII CARRIAGE RETURN
  13. LF       EQU       0AH       ;ASCII LINE FEED
  14.                              ;
  15. ;
  16.                              ;BEGIN THE "CODE" SEGMENT
  17.                              ;CONTAINING EXECUTABLE
  18.                              ;MACHINE CODE
  19. CSEG     SEGMENT   PARA PUBLIC 'CODE'
  20. ;
  21.          ASSUME    CS:CSEG,DS:DSEG,SS:STACK
  22. ;
  23. PRINT    PROC      FAR       ;ACTUAL PROGRAM CODE
  24.                              ;IS COMPLETELY CONTAINED
  25.                              ;IN THE "PROCEDURE" NAMED
  26.                              ;"PRINT".
  27.                              ;
  28.          PUSH      DS        ;SAVE DS:0000 ON STACK
  29.          XOR       AX,AX     ;FOR FINAL EXIT TO PC-DOS.
  30.          PUSH      AX
  31.                              ;SET DATA SEGMENT REGISTER
  32.                              ;TO POINT TO THE DATA SEGMENT
  33.                              ;OF THIS PROGRAM, SO THAT THE
  34.                              ;MESSAGE WE WANT TO PRINT IS
  35.                              ;ADDRESSABLE.
  36.          MOV       AX,SEG DSEG
  37.          MOV       DS,AX
  38.                              ;NOW PUT THE OFFSET OF THE
  39.                              ;MESSAGE TEXT INTO DX,
  40.          MOV       DX,OFFSET MESSAGE
  41.                              ;NOW DS:DX SPECIFIES THE
  42.                              ;FULL ADDRESS OF THE MESSAGE.
  43.          MOV       AH,9      ;USE THE PC-DOS FUNCTION 9
  44.          INT       21H       ;TO PRINT THE STRING.
  45.                              ;
  46.          RET                 ;NOW RETURN TO PC-DOS USING
  47.                              ;THE ADDRESSES WE PUSHED ON
  48.                              ;THE STACK AT ENTRY.
  49.                              ;
  50. PRINT    ENDP                ;END OF THE "PROCEDURE"
  51.                              ;NAMED "PRINT"
  52.                              ;
  53. CSEG     ENDS                ;END OF THE CODE SEGMENT
  54.                              ;CONTAINING EXECUTABLE
  55.                              ;PROGRAM.
  56.                              ;
  57.                              ;NOW WE DEFINE A DATA SEGMENT
  58.                              ;CONTAINING OUR PROGRAM'S
  59.                              ;CONSTANTS AND VARIABLES.
  60. DSEG     SEGMENT   PARA 'DATA'
  61.                              ;
  62. MESSAGE  DB        CR,LF,'HELLO!',CR,LF,'$'
  63.                              ;
  64. DSEG     ENDS
  65.                              ;
  66.                              ;LASTLY, WE DEFINE A STACK
  67.                              ;SEGMENT WHICH CONTAINS
  68.                              ;A SCRATCH AREA OF MEMORY
  69.                              ;FOR USE BY OUR PROGRAM'S STACK
  70. STACK    SEGMENT   PARA STACK 'STACK'
  71.                              ;ALLOW 64 BYTES IN THIS CASE
  72.          DB        64 DUP (?)
  73.                              ;
  74. STACK    ENDS
  75.                              ;THE FINAL "END" STATEMENT
  76.                              ;SIGNALS THE END OF THIS
  77.                              ;PROGRAM SOURCE FILE, AND GIVES
  78.                              ;THE STARTING ADDRESS OF
  79.                              ;THE EXECUTABLE PROGRAM
  80.          END       PRINT
  81.