我就是mov cx,18
mov result,cx 看不懂
为什么要把18给result
为自己补课
首先说一下,我的程序自己已经运行过了。
楼主的程序是有错的,14楼的解释是对的。
楼主估计是这个意思,但是在repnz scasb过程中di已经变化了,不是0,所以可以加一句lea si,string
mov [result-1][si],20h还有顺便说一下,直接运行mov byte ptr es:[result-1][si],20h是不行的,链接不通过
我按楼主的意思又改了一下,我已经运行过了。
dseg segment
result dw ?
dseg ends
eseg segment
string db 'the data is FEB&03','$'
eseg ends
cseg segment
assume cs:cseg,ds:dseg,es:eseg
start: mov ax,dseg
mov ds,ax
mov ax,eseg
mov es,ax
lea di,string
lea si,string
mov al,'&'
mov cx,18
mov result,cx
sign: cld
repnz scasb
jcxz show
sub result,cx ;将原来的cx 即 result 的值与现在的cx 的值相减,得到所要找的字符的位置
mov bx,result
mov byte ptr es:[bx-1][si],20H ;将找到的位置里的内容换成空格
jmp sign
show: assume ds:eseg
mov ax,eseg
mov ds,ax
lea dx,string
mov ah,09h
int 21h
mov ah,4ch
int 21h
cseg ends
end start