鱼C论坛

 找回密码
 立即注册
查看: 7931|回复: 3

关于sub的一个问题

[复制链接]
发表于 2013-2-25 19:10:57 | 显示全部楼层 |阅读模式
1鱼币
这是我看linux 0.01的源代码的bootsetc.s中的一段开始的代码,主要疑惑的部分如下:
start:
          mov        ax,#BOOTSEG        ;就是一个地址给ax,下同
          mov        ds,ax
          mov        ax,#INITSEG
          mov        es,ax
          mov        cx,#256               ;意思是把256复制给cx
          sub        si,si                         ;这是我不懂得地方,下同
          sub        di,di
          rep            ;循环的意思
我不懂的地方就是代码注释的地方那里,sub si,si,是es:si - ds:si吗?而且还要循环256次~麻烦谁知道告诉我,谢谢!

最佳答案

查看完整内容

不用想的太复杂 sub si,si,是si - si , 使得si为0,相当于mov si,0: sub di,di 也一样 而且你对rep的理解有误; 网站上有“汇编金手指”下载,基本上对指令都有介绍: “REP与MOVS或STOS串操作指令相结合使用,完成一组字符的传送或建立一组相同 ---- 数据的字符串.” 例如 rep movs,重复的是movs指令, 就是说rep重复的是跟在它后面的一条指令。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-25 19:10:58 | 显示全部楼层
不用想的太复杂
sub si,si,是si - si  , 使得si为0,相当于mov si,0:      
   sub   di,di  也一样

而且你对rep的理解有误;
网站上有“汇编金手指”下载,基本上对指令都有介绍:

“REP与MOVS或STOS串操作指令相结合使用,完成一组字符的传送或建立一组相同
----     数据的字符串.”

例如 rep movs,重复的是movs指令,
就是说rep重复的是跟在它后面的一条指令。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-25 19:47:03 | 显示全部楼层
我也有点迷茫 汇编知识需要再学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-2-26 16:15:41 | 显示全部楼层

昨天后来懂了,sub si,si确实是清零的意思,rep movw的意思是把es:si 的内容复制到ds: di那里去!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-18 00:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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