汇编语言 第九章 转移指令

转移指令的原理

修改cs:ip的值

操作符offset

取得标号处的偏移地址
比如start:mov ax,offeset start --这里的start的偏移地址为0,所以这条指令等于mov ax,0

jum无条件转移指令

jum 段内转移:

   范围在-128--127之间,也就是说向前转移最多128字节,向后127字节
   mov ax,0  --b80000(对应机器码)   
   jum short s  --eb03 两字节 这里的eb是jum的机器码,03指的ip是向下移动2字节,这里的03我们就称为转移位移,一般用补码表示,有负数
   inc ax       --40   一字节
   s:inc ax     --40

   综上 jum short 标号的功能:(ip)=(ip)+一字节转移位移
   类似指令:jum near ptr 功能   (ip)=(ip)+两字节转移位移
         jum word ptr ds:[0]  转移地址的内容存在ds:[0]里面

jum 段间转移:

   jum far ptr 段间转移 此时的机器码就没有转移位移了,一般都是短地址和偏移地址了
   
   jum ax 指的是(IP)=(16位寄存器)

   jum dword ptr ds:[0] 从ds:[0]处开始有四个字节,高位字节表示段地址,低位字节表示段内偏移

jum有条件转移指令:jcxz

  所有的有条件转移指令都是短指令

  jcxz 标志 如果cx=0 则转移到标号处执行,如果cx!=0,什么都不做
  
  loop指令 执行操作1.cx=cx-1 2,if cx!=0 --转移到标号处继续执行
posted @ 2022-03-27 16:33  只为梦飞翔  阅读(214)  评论(0)    收藏  举报