a15160665565 发表于 2011-5-12 20:26:02

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

本帖最后由 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不是相当于内存单元吗??怎么能相减后得到字符串的长??麻烦高手指教下
谢谢先

china0008 发表于 2011-5-14 09:52:36

本帖最后由 china0008 于 2011-5-14 09:58 编辑

还有mov cx,String2-String1

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

关于这个问题,string12代表的是各自 字符串第一个字符的 物理地址那用 2-1自然得到的就是 1的长度啦。把这个长度复制给cx,程序就知道该进行多少次的比较了。
页: [1]
查看完整版本: 这个程序哪里有问题?麻烦看下