![]() |
| ||
| I need help 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 SS:STACKSEG,DS:DATASEG,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 |
| ||
| 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 SS:STACKSEG,DS:DATASEG,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 SS:STACKSEG,DS:DATASEG,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 |
| All times are GMT -4. The time now is 1:15 am. |
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC