算法思想:
假设串以0作为结束标志,从右向左扫描,遇到空格后, 将其后的所有字符向前移动一个位置,直到首字符为止。 由于串长是动态变化的,所以需要设置三个指针,tailP指向串尾, 扫描用的指针scanP,及移动时用的指针moveP。
include vcIO.inc
;有一个首地址为string的字符串 ,剔除string中所有的空格字符。请从字符串最后一个字符开始逐个向前判断、并进行处理
;esi 用于扫描
;edi 用于移动
;edx 表示串尾(***********)
.data
string byte "l o o p ",0
.code
main proc
mov esi ,(lengthof string) - 2
mov edx ,(lengthof string) - 1
jmp whileLab
entry:
;
cmp string[esi],20h
jne next
mov edi,esi
jmp while2
entry2:
mov al,string[edi+1]
mov string[edi],al
inc edi
while2:
cmp edi,edx
jb entry2
dec edx
next:
;
dec esi
whileLab:
cmp esi,0
jge entry
ret
main endp
end main