资讯详情

汇编学习笔记(14)--控制转移指令

无条件跳转指令jmp

jmp dest;短跳 ;ip=dest ;jmp idata ;jmp short idata ;目标地址短跳idata下一条指令的偏移地址之间的距离必须在[-128、127]范围内 ;短跳指令编译成机器代码后,前一个字节是EBh表示短跳,后一个字节为1个8位符号,表示目标地址与下一个指令偏移地址之间的差异  jmp dest;近跳 ip=dest;jmp idata jmp reg jmp mem ;指示编码位3字节,第一字节位E9h,第二个和第三个字节形成一个16位符号,表示目标地址与下一个指令的偏移地址之间的差异  jmp dest;远眺 cs:ip =dest ;jmp idata idata是一个以seg:offset表示32位立即数 jmp mem,mem是双字,前一个字表示偏移地址,后者是段地址 ;编码位5个字节,第一个字节位EAh,前两个字节构成跳转偏移地址,后四个字节构成跳转段地址 

条件跳转指令

jz dest;zf=1 je dest;等价于上,符号数可以是非符号数  jnz dest;zf=0 jne dest;等价于上,符号数可以是非符号数  jc dest;jump if carry,cf=1跳转 jb;非符号数,cf=1 jnae;非符号数  jnc dest; 无进位跳转 ,cf=0 jnb;非符号数 jae;非符号数,大于等于,cf=0  js dest;sf=1符号位则跳 jns dest ;sf=0  jo dest;of=1 有溢出跳 jno dest  jp dest;pf=1奇偶位则条 jpe;jump if parity even  jnp dest;pf=0 jpo  ja dest;jumo if above 非符号数,cf=0且zf=0 jnbe;非符号数  jbe dest;非符号数,cf=1或zf=1 jna dest;非符号数  jg dest;符号数 sf=of且zf=0 jnle;符号数  jge dest;符号数sf=0或zf=1 jnl;符号数  jl dest;符号数sf!=of且zf=0 jnge;符号数  jle dest;符号数 sf!=of且zf=0 jnge;符号数  jle dest;符号数 sf!=of或zf=1 jng;符号数 ;注意以上这些都属于短跳  jcxz dest;若cx等于0则跳转 ;也是短跳 

循环指令loop,loopz,loope,loopnz,loopne

loop dest;循环 ;操作: cx-- if(cx!=0) ip=dest ;格式loop idata ex: mov ax,0 mov bx,1 mov cx,100 again:  add ax,bx  inc bx  loop again;等价于dec cx jnz again ;注意loop也属于短跳,偏移地址差必须落在范围[-128,127]  loopz dest;若等于零则循环 ;操作 temp=fl cx-- fl=temp if(cx!=0&&zf==1) ip=dest ;格式同上 ex: mov ax,0 mov bx,8 mov cx,10 again:  inc ax  shr bx,1  test bx,1;对bx和1进行and,影响标志位  loopz again;cx--若cx!=和zf=1跳转 ;也属于短跳  loope dest;等价于loopz  loopnz dest;等价于loopne dest ;操作 temp=fl cx-- fl=temp if(cx!=和zf=1跳转 ;也属于短跳  loope dest;等价于loopz  loopnz dest;等价于loopne dest ;操作 temp=fl cx-- fl=temp if(cx!=0&&zf==0) ip=dest ;类似loope 的操作 

子程序调用和返回指令call,retn,retf

call dest;近过程调用 ;操作 push ip;将下一个指令的偏移地址压入堆栈 ip=dest;跳到dest ;格式: call idata call reg(16位寄存器) call mem(16位字)  retn [count];近返回 ;retn指令通常用于从call调用过程中返回,为了方便写作,也可以写作ret ;ret操作 pop ip ;ret count操作 pop ip sp=sp count;  call dest;远程低矮哦用 ;操作 push cs push ip cs:ip=dest ;格式 call idata(32位立即数seg:offset,) call mem(双字,钱是偏移地址,后者是段地址) call 1234h:5678h  mov word ptr ds:[10f0h],5678h mov word ptr ds:[10f2h],1234h call dword ptr ds:[10f0h]  retf [count];远返回 ;retf操作 pop ip pop cs ;retf count操作 pop ip pop cs add sp,count 

中断和中断返回指令int into iret

int n;中断 ;操作 pushf;将标志寄存器压入堆栈 push cs push ip;将下一个指令的偏移地址压入堆栈 tf=0,if=0 ip=word ptr 0000h:[n*4]从中断向量表中取出ip cs=word ptr 0000h:[n*4 2]  into ;溢出中断 if(of==1) int 04h ;格式 into  iret;中断返回 ;用于从int或into指令产生的中断股在城市返回 ;操作 pop ip pop cs popf ;格式iret 

标签: jumo抗震温度传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台