News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests

Main Menu

reason why this program does not print a message

Started by hellfix, June 11, 2012, 07:54:13 AM

Previous topic - Next topic

hellfix

PAGE 60,132
TITLE SAMPLE - SHOWS DOS CALLING CONVENTIONS FOR .COM FILES
PAGE
COMSEG SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:COMSEG,DS:COMSEG,ES:COMSEG,SS:COMSEG
        ORG 80H             

CMDCNT DB ?          ;COMMAND LINE COUNT
CMDSTR DB 80 DUP(?)  ;COMMAND LINE BUFFER

   ORG 100H
   
START PROC FAR
JMP ENTRY
;-----------------
;DATA
;-----------
LOGO DB 'SAMPLE PROGRAM EXECUTED' ,13,10,'$'
;------------------
;SCAN INPUT PARAMETER LINE

ENTRY:  MOV DI,OFFSET CMDSTR
        MOV CH,0
   MOV CL,CMDCNT
   CMP CX,0
   
;NO PARAMETERS SUPPLIED - INSERT DEFUALT CODE HERE
       
   JMP SCANX
SCAN0:   MOV AL,[DI]      ;GET 1ST PARAMETER CHARACTER
        AND AL,0DH       ;CONVERT TO UPPDER CASE
;HANDLE PARAMETERS HERE
SCANN:  INC DI           ;POINT TO NEXT PARAMETER
        LOOP SCAN0       ;GET NEXT CHARACTER
SCANX:  NOP
;
;START OF MAIN PROGRAM

CALL CLRSCN           ;CLEAR THE SCREEN
CALL IAMHERE          ;DISPLAY MESSAGE

;RETURN TO DOS
DONE: PUSH DS
      MOV AX,0
      PUSH AX
      RET
START ENDP

;SUROUTINES
CLRSCN PROC
       PUSH AX
       MOV AX,2
       INT 10H
       POP AX
       RET
CLRSCN ENDP

;MESSAGE
IAMHERE PROC
        PUSH AX
   PUSH DX
   MOV AH,9
   MOV DX, OFFSET LOGO
   INT 21H
   POP DX
   POP AX
IAMHERE ENDP
COMSEG ENDS
       END START

im trying to pass arguments to the prorgam and print a message and clear the screen but the program does not print a message to the screen it only clears
the screen.

hellfix

I MADE THE PROGRAM MORE READABLE PLEASE REPLY

PAGE 60,132
TITLE SAMPLE - SHOWS DOS CALLING CONVENTIONS FOR .COM FILES
PAGE
COMSEG SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:COMSEG,DS:COMSEG,ES:COMSEG,SS:COMSEG

ORG 80H             
CMDCNT DB ?          ;COMMAND LINE COUNT
CMDSTR DB 80 DUP(?)  ;COMMAND LINE BUFFER
ORG 100H
   
START PROC FAR
       JMP ENTRY     ;JUMP PASS DATA
;--------------------------------------------
LOGO DB 'SAMPLE PROGRAM EXECUTED' ,13,10,'$'
;--------------------------------------------

;SCAN INPUT PARAMETER LINE

ENTRY:  MOV DI,OFFSET CMDSTR ;STRING
        MOV CH,0
   MOV CL,CMDCNT      ;PARAMETER COUNT
   CMP CX,0
   JNZ SCAN0          ;YES - PROCESS COMMAND LINE PARAMETERS
   JMP SCANX          ;NO - PARAMETERS
   
SCAN0:   MOV AL,[DL]
   AND AL,0DH         ;CONVERT TO UPPERCASE
   INC DI             ;INCREMENT STRING
   LOOP SCAN0
   
SCANX:  NOP

;START OF MAIN PROGRAM

CALL CLRSCN           ;CLEAR THE SCREEN
CALL IAMHERE          ;DISPLAY MESSAGE

;RETURN TO DOS
DONE: PUSH DS
      MOV AX,0
      PUSH AX
      RET
START ENDP

;CLEAR SCREEN
CLRSCN PROC
       PUSH AX
       MOV AX,2
       INT 10H
       POP AX
       RET
CLRSCN ENDP

;MESSAGE
IAMHERE PROC
        PUSH AX
   PUSH DX
   MOV AH,9
   MOV DX, OFFSET LOGO
   INT 21H
   POP DX
   POP AX
IAMHERE ENDP

COMSEG ENDS
END START

dedndave

i have attached a simple tiny model program, including the batch file used to assemble it
see if it helps