32汇编语言(masm32环境)编写程序 两个字符串连接

我写了一个程序,是连接两个字符串。首先程序提示用户输入两个字符串,然后连接两个字符串,要求显示原始字符串和连接后的字符串。.386.MODELFLAT,stdcallIN... 我写了一个程序,是连接两个字符串。首先程序提示用户输入两个字符串,然后连接两个字符串,要求显示原始字符串和连接后的字符串。
.386
.MODEL FLAT,stdcall
INCLUDE \masm32\include\io32.inc
.STACK 4096

.DATA
prompt1 BYTE "Please input the first string: ", 0
prompt2 BYTE "Please input the second string: ", 0
string1 DWORD 10 DUP (0)
string2 DWORD 10 DUP (0)
string3 BYTE ".",0
string DWORD 20 DUP (0)
origin BYTE "The original two strings are: ",0dh,0ah, 0
result BYTE "The result of connection is: ",0dh,0ah,0

.CODE
start: WriteString prompt1 ; 提示输入信息
Writecrlf
ReadString string1 ; 输入第一个原始字符串

WriteString prompt2 ; 提示输入信息
Writecrlf
ReadString string2 ; 输入第二个原始字符串

lea esi,string1 ;取第一个字符串的偏移地址给esi
lea edi,string2 ;取第二个字符串的偏移地址给edi
lea ebx,string ;取合并后新串的偏移地址给ebx

next1:mov eax,[esi]
mov [ebx],eax ;把第一个字符串的字符逐个传送到新串string中
inc esi
inc ebx ;指针增加1
loop next1

next2:mov eax,[edi]
mov [ebx],eax ;再把第二个字符串的字符逐个传送到新串string中
inc edi
inc ebx ;指针增加1
loop next2

WriteString origin
WriteString string1 ;输出原来的第一个字符串
Writecrlf
WriteString string2 ;输出原来的第二个字符串
Writecrlf
WriteString result
WriteString string ;输出用合并后的新的字符串
ret
end start
可是当输入了2个字符串以后不能正常运行了。请高手帮忙看看,程序应该怎么改?(一定是在masm32编程环境下)
展开
 我来答
_fmlyht
2010-11-21 · TA获得超过2359个赞
知道大有可为答主
回答量:2398
采纳率:0%
帮助的人:1841万
展开全部
LOOP前ECX未初始化

另外,这样写会不会好些
MOV EAX,DS
MOV ES,EAX
lea edi,string ;取合并后新串的偏移地址给ebx
lea esi,string1 ;取第一个字符串的偏移地址给esi
MOV CX,10 ;第一个字符串的长度(双字计)
REP MOVSD
lea edi,string2 ;取第二个字符串的偏移地址给edi
MOV CX,10 ;第二个字符串的长度(双字计)
REP MOVSD
bqjmm15
2010-11-27 · TA获得超过266个赞
知道答主
回答量:441
采纳率:0%
帮助的人:305万
展开全部
那章我看过,就是有些难得理解 ,理解了在操作就不难,那些东西了解就行, 现在一般不直接用API绘图, 知道个原理就差不多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pohcb05
2010-11-28 · TA获得超过2009个赞
知道小有建树答主
回答量:968
采纳率:0%
帮助的人:212万
展开全部
那章我看过,就是有些难得理解 ,理解了在操作就不难,那些东西了解就行, 现在一般不直接用API绘图, 知道个原理就差不多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式