+ -
当前位置:首页 → 问答吧 → 关于loop指令

关于loop指令

时间:2011-12-12

来源:互联网

请问关于loop指令中
执行完(cx)=(cx)-1;后
(ip)=(ip)+8
这里的8位位移=标号处得地址-loop指令后的第一个字节的地址。这是什么意思??是不是loop指令本身每次循环占用段长为8位的内存段?? 能不能举例说明一下??

作者: ljh21521   发布时间: 2011-12-12

loop是通过转移目的地址和转移开始地址之间的位移改变IP的,比如说
mov cx,4
s:mov [bx],ax
  add bx,2
  loop s
loop指令是这样执行的:先把(CX)=(CX)-1,如果(CX)==0,那就顺序执行下面的代码。如果(CX)!=0,那(IP)=(IP)+8位位移,即跳到S:处,因为执行loop指令的时候,IP已经指向LOOP指令后的下一条指令,要根据位移进行转移的话,8位位移=S:标号处的地址-现在的IP。这样(IP)=(ip)+8位位移,CS:IP指向了S:处,循环。
呵呵

作者: leiiiii   发布时间: 2011-12-12