鱼C论坛

 找回密码
 立即注册
查看: 3684|回复: 1

这个程序哪里有问题?麻烦看下

[复制链接]
发表于 2011-5-12 20:26:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 loop 于 2011-5-29 23:35 编辑

我的目的是 编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能

代码如下
assume cs:code ,ds:data
data segment
    String1 db 'I Love you!'
        String2 db 'I Love you!'
        Yes db 'Match',0dh,0ah,'$'
        No db 'No Match',0dh,0ah,'$'
data ends

code segment
start:
       push ds
           sub ax,ax
           push ax
           mov ax,data
           mov ds,ax
           mov es,ax
           
           lea si,String1
           lea di,String2
           cld 
           mov cx,String2-String1
           repe cmpsb
           jne DispNo
           lea dx,Yes
           jmp Disp
           
DispNo :
        lea dx,No
                        
Disp :
        mov ah,9
                int 21h
                ret

code ends 
end start
怎么我运行后是这样的

为什么会有这么多行????
还有  mov cx,String2-String1
这个语句 String2 和String1不是相当于内存单元吗??怎么能相减后得到字符串的长??麻烦高手指教下
谢谢先
NewImage.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-14 09:52:36 | 显示全部楼层
本帖最后由 china0008 于 2011-5-14 09:58 编辑

还有  mov cx,String2-String1

这个语句 String2 和String1不是相当于内存单元吗??怎么能相减后得到字符串的长??

关于这个问题,  string1  2  代表的是各自 字符串第一个字符的 物理地址  那用 2  -  1  自然得到的就是 1的长度啦。把这个长度复制给cx,程序就知道该进行多少次的比较了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 20:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表