gh_mohammady
جمعه 06 اردیبهشت 1392, 18:02 عصر
با سلام خدمت اساتید گرامی و سپاس بابت همکاریهای شما
این کد که من نوشتم باید تعداد تکرار حروف را محاسبه کنه ، فکرم این بود که من کارکتر اول رو بریزم تو Di با کل رشته مقایسه کنم بعد کارکتر دوم رو بریزم تو di و الی آخر، نمیدونم چطور این کارو تو حلقه انجام بدم، میشه راهنماییم کنید:
dseg segment 'data'
st label byte
max db 40
len db ?
str db 40 dup(?)
repet db 0
str1 db "PLZ enter String:",'$'
str2 db 10,13,"String is:",'$'
dseg ends
cseg segment 'code'
assume cs:cseg,ds:dseg
main proc far
mov ax,dseg
mov ds,ax
lea dx,str1
call print
lea dx,st
call read
mov cl,len
mov ch,0
mov di,0
mov si,0
for1:
mov bl,str[di]
mov al,str[si]
cmp al,bl
je l1
;inc si
;jmp for1
inc di
l1:
add repet,1
mov str[si],'*'
inc si
loop for1
lea dx,str2
call print
add repet,48
mov dl,repet
mov dh,0
mov ah,2h
int 21h
mov ax,4c00h
int 21h
main endp
print proc near
mov ah,9h
int 21h
ret
print endp
read proc near
mov ah,0ah
int 21h
ret
read endp
cseg ends
end main
این کد که من نوشتم باید تعداد تکرار حروف را محاسبه کنه ، فکرم این بود که من کارکتر اول رو بریزم تو Di با کل رشته مقایسه کنم بعد کارکتر دوم رو بریزم تو di و الی آخر، نمیدونم چطور این کارو تو حلقه انجام بدم، میشه راهنماییم کنید:
dseg segment 'data'
st label byte
max db 40
len db ?
str db 40 dup(?)
repet db 0
str1 db "PLZ enter String:",'$'
str2 db 10,13,"String is:",'$'
dseg ends
cseg segment 'code'
assume cs:cseg,ds:dseg
main proc far
mov ax,dseg
mov ds,ax
lea dx,str1
call print
lea dx,st
call read
mov cl,len
mov ch,0
mov di,0
mov si,0
for1:
mov bl,str[di]
mov al,str[si]
cmp al,bl
je l1
;inc si
;jmp for1
inc di
l1:
add repet,1
mov str[si],'*'
inc si
loop for1
lea dx,str2
call print
add repet,48
mov dl,repet
mov dh,0
mov ah,2h
int 21h
mov ax,4c00h
int 21h
main endp
print proc near
mov ah,9h
int 21h
ret
print endp
read proc near
mov ah,0ah
int 21h
ret
read endp
cseg ends
end main