The MASM Forum Archive 2004 to 2012

Miscellaneous Forums => 16 bit DOS Programming => Topic started by: ASMLOVE on May 13, 2009, 11:18:32 AM

Title: help for code
Post by: ASMLOVE on May 13, 2009, 11:18:32 AM
I'M A NEW LEARNER.
I HAVE WRITTEN THIS PROGRAM
TO READ A STRING FROM THE KEYBOARD AND TO DISPLAY IT ON THE SCREEN,BUT I'M NOT GETTING THE OUTPUT.CAN ANY 1 HELP ME?

CODE

.MODEL SMALL
.STACK
.DATA
MSG3 DB "ENTER A WORD:$"
STR DB 20 DUP(?)
.CODE
MOV AX,@DATA
MOV DS,AX
LEA DX,MSG3
MOV AH,09H
INT 21H
LEA DX,STR
MOV AH,0AH
INT 21H

LEA DX,STR
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
END
Title: Re: help for code
Post by: FORTRANS on May 13, 2009, 01:59:13 PM
Hi,

   Look at the "Buffered Input.[solved]" thread in January for
help to use DOS Fn 0AH.

Steve
Title: Re: help for code
Post by: ASMLOVE on May 13, 2009, 02:50:05 PM
thanks...
here is one more program.i'm getting some garbage value..
this program is to calculate factorial of a number.

CODE

.MODEL SMALL
.STACK
.DATA
NUM DW 4
RESULT DW ?
.CODE
MOV AX,@DATA
MOV DS,AX
MOV AX,01
MOV CX,NUM
CMP CX,00
JE EXIT
MOV BX,CX
CALL FACT
EXIT:MOV RESULT,AX
LEA DX,RESULT
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
FACT PROC NEAR
CMP BX,1
JE STOP1
PUSH BX
DEC BX
CALL FACT
POP BX
MUL BX
RET
STOP1:MOV AX,1
RET
FACT ENDP
END
Title: Re: help for code
Post by: Neil on May 13, 2009, 03:58:40 PM
A quick look & I see a major problem :-

                      CALL FACT  within your proc is messing up the stack.

When you pop BX you are actually popping a return address & not BX
Title: Re: help for code
Post by: ASMLOVE on May 13, 2009, 04:05:50 PM
THANKS,
WHAT SHOULD I DO NOW?
ANY HINT
Title: Re: help for code
Post by: Neil on May 13, 2009, 04:08:22 PM
You need to write a LOOP  :bg
Title: Re: help for code
Post by: ASMLOVE on May 13, 2009, 04:29:52 PM
I TRIED THAT,BUT NOW I GET A BLANK OUTPUT