+ -
当前位置:首页 → 问答吧 → 字符串操作问题.

字符串操作问题.

时间:2011-11-26

来源:互联网

Assembly code

data segment
    buf1 db 10,'12*234*456'            ;10为元素个数  删除buf1中的'*'(确定有*)
    buf2 db 11 dup(?)
data ends
code segment
    assume cs:code,ds:data,es:data
start:
    mov ax,data
    mov ds,ax
    mov es,ax
    
    lea si,buf1
    lea di,buf2
    mov cx,10
    mov al,'*'

lp:
    inc si
    cmp al,[si]
    jz lp2
    mov bl,[si]
    mov [di],bl
    inc di
lp2:
    loop lp
        
    lea si,buf1+1
    lea di,buf2
    mov cx,10
rep movs buf1,buf2
    
        
    mov ah,4ch
    int 21h
code ends
end start




程序已经实现删除buf1中的*,并存到buf2,但是在将buf2中的元素再传送到buf1时,发现竟然传不过去,实在不知为何?

作者: zgdahai   发布时间: 2011-11-26

引用楼主 zgdahai 的回复:
Assembly code

data segment
buf1 db 10,'12*234*456' ;10为元素个数 删除buf1中的'*'(确定有*)
buf2 db 11 dup(?)
data ends
code segment
assume cs:code,ds:data,es:data
start:
mov a……

源和目标错位了,应该是
  lea di,buf1+1
  lea si,buf2
  mov cx,10
rep movs buf2,buf1+1

作者: gsy999   发布时间: 2011-11-26