944,025 Members | Top Members by Rank

Ad:
  • Assembly Discussion Thread
  • Unsolved
  • Views: 4039
  • Assembly RSS
Apr 14th, 2005
0

I need help

Expand Post »
Hi guys
I want to write program in assembly language to read string from user and replace each symbol * in string to E but i do not know how i can replace * to E after read string>>>Iam begginer in this language

this is my code and i hope to help me >>>pl.help me iam wating your help


STACKSEG SEGMENT
DW 32 DUP(?)
STACKSEG ENDS
;============================
DATASEG SEGMENT

LF EQU 0AH
CR EQU 0DH
MSG DB 'Enter the firts string...$'
MSG1 DB CR,LF, 'The string is: $'
STR1 DB 9 DUP(?)

DATASEG ENDS
;===========================
CODESEG SEGMENT

BEGIN PROC FAR
ASSUME SSTACKSEG,DSATASEG,CS:CODESEG

MOV AX,DATASEG
MOV DS,AX
MOV ES,AX

;Reading the messege
LEA DX,MSG
MOV AH,9
INT 21H

;===========================

MOV CX,0
CLD
LEA DI,STR1
MOV AH,1

REPEATE:

INT 21H
STOSB
INC DX


UNTIL:
CMP AL,0DH
JNE REPEATE
DEC DI
MOV AL,'$'
STOSB

;================================
CLD
MOV DX,CX
;Scan symbol * and replace it into E
LEA SI,STR1
;Looking for the * in string
MOV AL,'*'
REPNE SCASB
JE FOUND

FOUND:
MOV AL,'E'
STOSB
DEC DX

;=================================
;Print string1
LEA DX,MSG1
MOV AH,9
INT 21H

LEA SI,STR1
REP:
LODSB
MOV DL,AL
MOV AH,2
INT 21H
DEC CX
CMP CX,0
JE END_PROG
LOOP REP


;Return control for assembler
END_PROG:
MOV AH,4CH
INT 21H

BEGIN ENDP
CODESEG ENDS
END BEGIN
Reputation Points: 10
Solved Threads: 0
Newbie Poster
The Angel is offline Offline
2 posts
since Apr 2005
Apr 15th, 2005
0

Re: I need help

hi guys
i can replace each symbol * in string to E by using LODSB but i want do that using SCASB
------------------------------------------------------
STACKSEG SEGMENT
DW 32 DUP(?)
STACKSEG ENDS
;============================
DATASEG SEGMENT

LF EQU 0AH
CR EQU 0DH
MSG DB 'Enter the firts string...$'
MSG1 DB CR,LF,'THe string is: $'
STR1 DB 9 DUP(?)
STR2 DB 9 DUP(?)
DATASEG ENDS
;===========================
CODESEG SEGMENT

BEGIN PROC FAR
ASSUME SSTACKSEG,DSATASEG,CS:CODESEG

MOV AX,DATASEG
MOV DS,AX
MOV ES,AX

;Reading the messege
LEA DX,MSG
MOV AH,9
INT 21H

;===========================

MOV CX,1
CLD
LEA DI,STR1
MOV AH,1

REPEATE:

INT 21H
STOSB
INC CX

UNTIL:
CMP AL,0DH
JNE REPEATE
DEC DI
MOV AL,'$'
STOSB

MOV DX,CX

;----------------------------------------------------
;FINd * and replace it
LEA SI,STR1
LEA DI,STR2

REP:
LODSB
CMP AL,'*'
JE STORE
STOSB
LOOP REP

STORE:
MOV AL,'E'
STOSB
CMP CX,0
JNE REP

;----------------------------------------------------

MOV CX,DX

LEA DX,MSG1
MOV AH,9
INT 21H
;Copy the character of string
LEA SI,STR2
REP1:
LODSB
MOV DL,AL
MOV AH,2
INT 21H

LOOP REP1

;Return control for assembler
MOV AH,4CH
INT 21H

BEGIN ENDP
CODESEG ENDS
END BEGIN
--------------------------------------------------
-------------------------------------------------
--------------------------------------------------
another way
but i can do that using SCASB :cry: :cry: :cry: :cry:
STACKSEG SEGMENT
DW 32 DUP(?)
STACKSEG ENDS
;============================
DATASEG SEGMENT

LF EQU 0AH
CR EQU 0DH
MSG DB 'Enter the firts string...$'
MSG1 DB CR,LF,'The string is: $'
STR1 DB 9 DUP(?)
STR2 DB 9 DUP(?)
DATASEG ENDS
;===========================
CODESEG SEGMENT

BEGIN PROC FAR
ASSUME SSTACKSEG,DSATASEG,CS:CODESEG

MOV AX,DATASEG
MOV DS,AX
MOV ES,AX

;Reading the messege
LEA DX,MSG
MOV AH,9
INT 21H

;===========================

MOV CX,0
CLD
LEA DI,STR1
MOV AH,1

REPEATE:

INT 21H
STOSB
INC CX

UNTIL:
CMP AL,0DH
JNE REPEATE
DEC DI
MOV AL,'$'
STOSB

MOV DX,CX
;------------------------------------------------
CLD
LEA DI,STR1
MOV AL,'*'

TOP:
REPNE SCASB
JE REPLACE

REPLACE:
MOV AL,'E'
STOSB
CMP CX,0
JNE TOP

;----------------------------------------------------

MOV CX,DX

LEA DX,MSG1
MOV AH,9
INT 21H
;Copy the character of string
LEA SI,STR1
REP1:
LODSB
MOV DL,AL
MOV AH,2
INT 21H

LOOP REP1

;Return control for assembler
MOV AH,4CH
INT 21H

BEGIN ENDP
CODESEG ENDS
END BEGIN
Reputation Points: 10
Solved Threads: 0
Newbie Poster
The Angel is offline Offline
2 posts
since Apr 2005

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in Assembly Forum Timeline: Just bought an assembly book and having problems with basic stuff.
Next Thread in Assembly Forum Timeline: FPU + external C file - how to return double





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC