汇编语言之转移指令

本文详细介绍了汇编语言中的转移指令,包括无条件转移、条件转移、循环指令、子程序调用以及中断处理。重点讲解了无条件转移的各种形式,如根据位移、地址在指令、地址在寄存器和地址在内存的转移方式。同时,讨论了条件转移指令如JCXZ,循环指令如LOOP,子程序的CALL和RET操作,以及中断的内中断和外中断机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.定义

修改IP或同时修改CS和IP的指令称为转移指令

2.无条件转移指令

jmp   x

(1)根据位移

jmp short :-127~127

jmp near ptr:-32768~32767

jmp +偏移量:并没有给出目的地址的地址,而是给出了目的地址相对此时IP的偏移量

(2)地址在指令

jmp far ptr:段间转移

包含目的地的地址,高位地址为段地址,低位地址为偏移地址

(3)地址在寄存器(bx,si,di,bp)

jmp reg:即将IP修改为reg的内容

(4)地址在内存

3.条件转移指令

JCXZ DEST:条件为cx寄存器中的值是否为0,如果为0就对IP进行修改,+偏移量

DEST为destination目的地

 

4.循环指令

loop:cx--,判断cx是否为0,如果不为0,就对IP进行修改,如果为0,则执行下一条指令

5.子程序

call

  

ret

 子程序

程序首先执行ax=1,cx=3,然后遇到call转移到s处,此时将CS和IP(指向mov,bx,ax)压入栈中,然后执行ax+=ax,再执行loop s,cx-=cx,cx=0?循环2次,loop指令结束,执行ret指令,此时将栈中的CS和IPpop出,指向bx=ax,执行该指令后bx=8

6.中断

(1)内中断

cpu内部提出的中断请求

①除法错误:调用int 0

②单步执行:根据调试标志位TF是否为1来决定是否执行单步中断

③into指令:溢出中断,判断OF标志位是否为1来调用int 4

④int指令: int  +中断类型码n   调用n中断 

指令中的中断类型码→对应的中断向量即入口地址   (有0~255共256个中断类型码)

 

 

 中断处理程序:

(2)外中断

cpu外部提出的中断请求,即I/O设备提出的

I/O设备与cpu间的通信通过I/O设备的端口

1.可屏蔽中断:cpu可以不响应的中断,通过设置IF标志位的值,IF=1时响应,IF=0时不响应

2.不可屏蔽中断:cpu必须响应的中断

外中断响应时流程:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值