【汇编】 常用代码段 rep movsw/rep movsw

来源:互联网 发布:jy的淘宝店网址是多少 编辑:程序博客网 时间:2024/06/10 09:48
 

移动代码段:

rep movsw

              mov    ax,#BOOTSEG
             mov    ds,ax
             mov    ax,#INITSEG
             mov    es,ax
             mov    cx,#256
              sub    si,si
             sub    di,di
             cld
             rep
              movsw

              jmpi go,INITSEG
【linux中bootsection.s用这段代码完成moves itself out of theway to address Ox90000,and jumps there】

先说搬移字串。搬移字串指令有两种,分别是 MOVSB MOVSW,先说 MOVSB。MOVSB 的英文是move string byte,意思是搬移一个字节,它是把 DS:SI 所指地址的一个字节搬移到 ES:DI 所指的地址上,搬移后原来的内容不变,但是原来 ES:DI 所指的内容会被覆盖而且在搬移之后 SI 和 DI 会自动的指向下一个要搬移的地址。

一般而言,通常程序设计师一般并不会只搬一个字节,通常都会重复许多次,如果要重复的话,就得把重复次数 ( 也就是字串长度 ) 先记录在 CX 寄存器,并且在 MOVSB 之前加上 REP 指令,REP 是重复 (repeat) 的意思。这种写法很是奇怪,一般而言汇编语言源文件的每一行都只有一个指令,但 REP MOVSB 却可以在同一行写两个指令,当然分开写也是一样的。

SUB (subtract)
指令的汇编格式:SUB dst,src
指令的基本功能:(dst)<-(dst)-(src)

重复执行串 REP
指令的汇编格式:REP (CX)=重复次数
指令的基本功能:① (CX)=0时,串指令执行完毕,否则执行② ~ ④
② (CX)←(CX)-1③ 执行串指令(MOVS或STOS)④ 重复执行①

串传送 MOVSB / MOVSW (move string byte/word)
指令的汇编格式:MOVSB
MOVSW
指令的基本功能:(ES:DI)<-(DS:SI)
(SI)<-(SI)+/-1(字节)或+/-2(字)
(DI)<-(DI)+/-1(字节)或+/-2(字)
指令对条件码的影响:不影响条件码。
指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI和DI寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段

http://apps.hi.baidu.com/share/detail/32932237
原创粉丝点击