CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他开发语言 >  汇编语言

字符串的传送,为什么要这样啊

楼主gyhou()2005-06-08 11:14:19 在 其他开发语言 / 汇编语言 提问

将以ADR1为偏移地址的原数据区的内容按字节方式移送到以ADR2为偏移地址的目标区域中,字节数为N且数据均为无符号数  
  mov     si,adr1  
  mov     di,adr2  
  mov     cx,n  
  cmp     di,si     ;为什么还要比较?直接传送不可以吗?  
  jb     don1  
  std  
  add     si,cx   ;为什么还要加上CX呢?  
  dec     si  
  add     di,cx  
  dec     di  
  jmp     don2  
  don1:cld  
  don2:rep     movsb  
  hlt  
  请高手指教以上的两个疑点,谢谢!  
  问题点数:20、回复次数:3Top

1 楼mydo(侯佩|hopy|ks)回复于 2005-06-08 12:48:51 得分 10

std   标志位置1   ,以便在用   movsb   指令时作   si=si-1   ,di=di-1   操作,  
  后面的  
   
  add     si,cx    
  dec     si  
  add     di,cx  
  dec     di  
   
  将   si,di   定位于串的尾部以便向反方向移动指针。Top

2 楼zara(Kyrie eleison)回复于 2005-06-08 14:05:30 得分 10

>>     cmp     di,si     ;为什么还要比较?直接传送不可以吗?  
      这个比较,   是为了防止当目标区域在源区域之后时,   两个区域如果有重叠的话,   直接传送,   就会导致源区域的末端数据会被以目的区域开始的地方而被源数据的开始部分给覆盖掉.   比如,   源区域为   0-1f,   目标区域为   18-27,   传送的长度为   10h   字节,   如果是   cld   情况下的传送的话,   源区域开始的   0-7   一开始就会被传送到目标区域开始的   18-1f,   而   18-1f   也同样是源区域的末端部分,   这样,   源区域的最后的   8   字节就被自己开始的   8   字节给破坏了.   而由尾端反向至开始部分进行传送的话,   源区域被覆盖的数据在被覆盖时,   已经被传送了,   因为在末端嘛,   是首先被传送的.   另外,   如果,   目标区域在源区域之前的话,   即使两者有重叠,   也是目的区域的末端覆盖了源前面的前端,   而当这个覆盖发生时,   源数据前端的数据已经被传送过了,   即使破坏了,   也无所谓了,   至少,   它保证了目标区域数据的正确.Top

3 楼gyhou()回复于 2005-06-10 10:21:35 得分 0

谢谢你们!Top

相关问题

  • “类字符串无效”为什么出现这样的错误?
  • 为什么我这样去掉字符串的空格会出错?
  • 请问 这样 初始化 字符串数组 为什么不对
  • winsock传送字符串的问题
  • 为什么截取不了字符串?
  • 求教大侠!我这样写的一个字符串替换函数为什么不起作用???奇怪!!!
  • JDBC访问oracle,为什么这样的语句不行:select t.*, '常量字符串' from my_table t?
  • JDBC访问oracle,为什么这样的语句不行:select t.*, '常量字符串' from my_table t?
  • 有这样的字符串函数吗?
  • 怎样创造这样的字符串?

关键词

  • 区域
  • 数据
  • 传送
  • 末端
  • di
  • si
  • 覆盖
  • adr
  • 目标
  • cx

得分解答快速导航

  • 帖主:gyhou
  • mydo
  • zara

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo