哪位朋友帮忙看看我这个汇编程序哪里出现问题了
data1 segment
a db '1234567890$'
c db '$'
data1 ends
data2 segment
b db 'abcd$'
data2 ends
code segment
assume cs:code,ds:data2,es:data1
start: mov ax,data2
mov ds,ax
mov ax,data1
mov es,ax
mov di,offset a
mov cx,11
cld
mov al,c
repnz scasb
mov si,offset b
mov cx,5
rep movsb
mov ax,4ch
int 21h
code ends
end start
功能:在字符串1234567890$中,现查找到$,在把abcd$插入到它的后面!
我不要你们的程序,只要你们帮我看看我的程序哪里出问题了!
问题点数:20、回复次数:5Top
1 楼xiaott(我能睡觉吗)回复于 2003-06-04 12:23:13 得分 10
程序没有问题,运行结果正确:DEBUG结果如下:
129D:0000 31 32 33 34 35 36 37 38-39 30 24 61 62 63 64 24 1234567890$abcd$
Top
2 楼lowes(翔风)回复于 2003-06-04 14:34:50 得分 10
楼主,你是不是想在字符串中找到$后,将它删除,再拼接字符。即程序执行后的结果是
1234567890abcd$
假如是这样的话,你必须在
repnz scasb
后面加一句:
dec di
因为在执行repnz scasb的同时会修改di的值,相当与inc diTop
3 楼lezi1022(doyouknowdk)回复于 2003-06-04 15:25:50 得分 0
的确是要把$删除,怎么我的masm5.0,masm,link时都没错,但在debug执行时一直没反映!
lowes(翔风) ,按你说的,我的应该可以运行,只是结果问题而已啊!
Top
4 楼yanghaipeng226(海鹏)回复于 2003-06-04 16:51:19 得分 0
mov di,offset a
中的di应该为dl吧~~~~~~~~~Top
5 楼painfulness(我要考高程)回复于 2003-06-04 19:14:47 得分 0
to:yanghaipeng226(海鹏)
字符串的移动,要用到di和siTop



