鱼C论坛

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

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

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

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

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

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

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

代码如下
  1. assume cs:code ,ds:data
  2. data segment
  3.     String1 db 'I Love you!'
  4.         String2 db 'I Love you!'
  5.         Yes db 'Match',0dh,0ah,'$'
  6.         No db 'No Match',0dh,0ah,'$'
  7. data ends

  8. code segment
  9. start:
  10.        push ds
  11.            sub ax,ax
  12.            push ax
  13.            mov ax,data
  14.            mov ds,ax
  15.            mov es,ax
  16.           
  17.            lea si,String1
  18.            lea di,String2
  19.            cld
  20.            mov cx,String2-String1
  21.            repe cmpsb
  22.            jne DispNo
  23.            lea dx,Yes
  24.            jmp Disp
  25.           
  26. DispNo :
  27.         lea dx,No
  28.                        
  29. Disp :
  30.         mov ah,9
  31.                 int 21h
  32.                 ret

  33. code ends
  34. 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-4-24 10:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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