关于sub的一个问题
这是我看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重复的是跟在它后面的一条指令。
我也有点迷茫 汇编知识需要再学习 仁意 发表于 2013-2-25 22:33 static/image/common/back.gif
不用想的太复杂
sub si,si,是si - si, 使得si为0,相当于mov si,0:
sub di,di也一样 ...
昨天后来懂了,sub si,si确实是清零的意思,rep movw的意思是把es:si 的内容复制到ds: di那里去!
页:
[1]