PDA

View Full Version : حذف کاراکتر blank از یه رشته



kiuhnmgtrdcv
شنبه 30 خرداد 1388, 17:54 عصر
برای حذف تمامی فضاهای خالی در یک رشته من این کد نوشتم ولی ایراد داره لطفا ایرادهاشو تصحیح کنید


stk segment stack
db 64 dup(' ')
stk ends
datasg segment para 'code'
name1 db 's a l am',"$"
space db " "
name2 db 20 dup(' '),"$"
datasg ends
codesg segment para 'code'
main proc far
assume ds:datasg, cs:codesg, ss: stk

mov ax,datasg
mov ds,ax
mov es,ax

lea bx,name1
lea bp,name2
pa:
mov dl, byte ptr[bx]
cmp dl," "
inc bp
inc bx
je pa ;ignore space and next
mov byte ptr [bp],dl
cmp dl,"$" ;if not end of string next
jne pa

mov ah,9
lea dx,name2
int 21h
pe:
mov ax, 4c00h
int 21h
main endp
codesg ends
end main

Open-Source
شنبه 30 خرداد 1388, 18:26 عصر
;
;Get String & Remove Spase
;
.model small

.data
maxlen db 50
actlen db ?
string db 50 dup(?)

d1 db ?
d2 db ?
temp1 db ?
temp2 db ?

.code
start:

mov ax,@data
mov ds,ax

;-------------Get String
mov ah,10
mov dx,offset maxlen
int 21h

;-------------Add '$'
mov bl,actlen
mov bh,0

mov string[bx],36

;-------------- Enter
mov ah,2
mov dl,10
int 21h


;------------------------------- Get char & Chek by space+'$'
mov d1,0
mov d2,1

up0:
mov bl,d1
mov bh,0


cmp string[bx],32
je u1

;else
up1:
mov bl,d1
mov bh,0

cmp string[bx],36
je fin

inc d1
inc d2
jmp up0
;----------------------------------------------------------

;-------------------------- Finish
fin:
;-------------Print
mov ah,9
mov dx,offset string
int 21h


;----------- End
mov ah,0
int 16h

mov ah,4ch
int 21h
;-----------------------


;;-------------- remove space
u1:
mov bl,d2
mov bh,0

cmp string[bx],32
jne up1

;else
mov bl,d2
mov bh,0
mov temp1,bl
mov temp2,bl
inc temp2

do:
mov bl,temp2
mov bh,0
mov si,bx

mov bl,temp1
mov bh,0

mov al,string[si]
mov string[bx],al


inc temp1
inc temp2

cmp string[bx],36
jne do

;else
jmp up0


end start


این یه برنامه هست که فاصله های اضافی رو حذف میکنه.

kiuhnmgtrdcv
شنبه 30 خرداد 1388, 19:06 عصر
من این کد تست کردم مثل اینکه درست کار نمیکنه مثلا بهش kkk kkk دادم و بهم بازم kkk kkk داد(با فاصله)
ممنون

koorosh4
چهارشنبه 09 دی 1388, 18:28 عصر
همین برنامه رو به زبان c++ میخوام