当前位置: 代码迷 >> 汇编语言 >> 关于loop指令,该怎么处理
  详细解决方案

关于loop指令,该怎么处理

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

------解决方案--------------------------------------------------------
不是。assume 语句对段寄存器指向的说明,只是让汇编程序在处理访问标号的指令时,看标号所在的段是否需要加上额外的段前缀。比如在你程序里,assume ds:data 通常的对 data 段里的数据访问就不需要加,如果有 mov ax, word ptr start 这样的以数据操作形式访问 code 段里的内容的话,就会被加上 cs: 段前缀指令。对多数据段也是一样的要求。
assume cs:code 这样的语句,也只有 Masm5 这样的早期版本需要吧,后来的取消了这个要求。对其它段的说明还是需要的。对 cs ,执行在哪个段,它肯定是指向在哪个段了,这是理所当然的,再用 assume 语句说明,就是多余了。
  相关解决方案