| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1382 人关注过本帖
标题:汇编语言的问题(温柔小刀的问题)
取消只看楼主 加入收藏
nuww7
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-8-22
收藏
 问题点数:0 回复次数:0 
汇编语言的问题(温柔小刀的问题)
实现两个字符串的比较
子程序描述:
;子程序STRCMP
;功能:比较两个字符串
;入口参数:DS:SI=字符串1的首地址  
           ES:DI=字符串2的首地址
;出口参数:AX=0,表示两个字符串相同
;说明:设字符串均以0为结束标志

STRCMP  PROC
              CLD
           PUSH DI
          XOR AL,AL
           MOV  CX,0FFFFH
NEXT:SCASB
           JNZ  NEXT
         NOT  CX
           POP  DI
          REPZ  CMPSB
           MOV  AL,[SI-1]
           MOV BL,ES:[DI-1]
             XOR AH,AH
              MOV  BH,AH
             SUB AX,BX
             RET
STRCMP  ENDP
我的问题:
        XOR AL,AL
           MOV  CX,0FFFFH
NEXT:SCASB
           JNZ  NEXT
        NOT  CX
这几个语句的作用是什么?老师说第一句是先测试一个字符串长度,NOT  CX
这句是取得重复的次数,不能理解,这是怎么取得的?SCASB的作用是AL减去DI所指向的内存中存储的字符
的ASCII码,XOR AL,AL后,AL=0,字符串是以0结尾的,这样就能扫描完字符串,这是可以理解的,可是关
于字符串的长度的计数,也就是取得重复次数怎么用NOT  CX。现在假设重复了5次,CX<----CX-5,即0FFFFH
减去5,这NOT CX是取得重复次数,真不能理解。
搜索更多相关主题的帖子: 汇编语言 小刀 
2008-08-28 09:04
快速回复:汇编语言的问题(温柔小刀的问题)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016405 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved