注册 登录
编程论坛 汇编论坛

编写一个程序,将字符串中的空格字符删除..............,求助

whbc 发布于 2010-10-26 09:27, 1969 次点击
编写一个程序,将字符串中的空格字符删除,每删除一个空格,后续字符依次前移,这里设字符串是以0结尾的!
程序代码:
DSEG SEGMENT
   VAR1 DB "ABCDEF T YQ0"
DSEG ENDS
CSEG SEGMENT
  ASSUME CS:CSEG ,DS:DSEG
  START:
  MOV AX,DSEG
  MOV DS,AX
  LEA SI,VAR1
NEXT:
  CMP BYTE PTR  DS:[SI],00H
  JZ EXIT
  CMP BYTE PTR DS:[SI],20H
  JNZ DISP1
DISP:
  MOV BX,SI
  INC BX
  MOV AL,DS:[BX]
  MOV BYTE PTR DS:[BX-1],AL
  CMP BYTE PTR DS:[BX+1],00H
  JNZ DISP
DISP1:
  INC SI
  JMP NEXT
EXIT:
  MOV AH,4CH
  INT 21H
CSEG ENDS
END START
这是我写了一个,好像是个死循环,求高手解答!还有就是这个问题如果中间有很多个空格,该怎么写程序呢?
4 回复
#2
xiaomarn2010-10-26 11:42
DSEG SEGMENT
   VAR1 DB "ABCDEF T YQ0",0
DSEG ENDS
CSEG SEGMENT
  ASSUME CS:CSEG ,DS:DSEG
START:
  MOV AX,DSEG
  MOV DS,AX
  LEA SI,VAR1
  mov bx,si        ;bx和si同时指向数组
NEXT:
  CMP BYTE PTR [SI],00H
  JZ EXIT
  CMP BYTE PTR [SI],20H
  JNZ DISP1
DISP:
  inc si            ;遇到空格不保存
  jmp next
DISP1:
    mov al,[si]
    mov [bx],al        ;非空格和0保存(原数组位置)
  INC SI
  inc bx
  JMP NEXT
EXIT:
    mov [bx],0        ;数组最后保存个0
  MOV AH,4CH
  INT 21H
CSEG ENDS
END START
#3
whbc2010-10-26 13:05
mov [bx],0
楼上的大侠,这句应该改成这样 mov byte ptr [bx],0;
#4
whbc2010-10-26 13:06
谢谢那位大侠了!!
1