版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
四控制转移指令转移类指令循环控制指令过程调用和返回指令中断控制类指令1转移指令1)无条件转移指令无条件转移到目标地址,执行新的指令。2)有条件转移指令在具备一定条件的情况下转移到目标地址。转移指令的实质:改变IP(或CS)的内容。所有转移指令不会影响标志位。分为无条件转移和条件转移两种。(1)无条件转移指令JMP①段内直接转移(相对转移)
转移的目标地址由指令直接给出。指令中直接给出的目标地址实际上是一个相对于IP的位移量。
位移量转移范围汇编语言中格式
8位
-128~+127
JMPSHORT
LABLE 16位
-32768~+32767JMPNEARPTR
LABLE例: JMP 0120H ;直接转向0120H JMP SHORTLPI;转向LPI
JMP
NEARPTRBBB ;转向BBB由于是段内转移,故转移后CS内容保持不变
转移的目标地址(偏移量)由寄存器或存储单元的内容给出。
例:JMPSI
若指令执行前(SI)=1200H,则指令执行后,(IP)=1200H,于是转向代码段的偏移地址1200H处执行。②段内间接转移注意:目标地址以段内偏移的形式给出,而不是相对于IP的位移量,所以它是一个16位的操作数。例:JMP[BX+DI]设指令执行前:(DS)=3000H,(BX)=1300H,(DI)=1200H,(32500H)=50H,(32501H)=23H;则指令执行后:(IP)=2350H在汇编语言中,段内间接寻址通常写成:
JMP WORDPTR[BX+DI]
表示所取得的目标地址是一个字(16位偏移地址)。②段内间接转移
在指令中直接给出要转移到的目的段地址和偏移地址。
例:JMP 2000:1000H
执行时,(IP)←1000H,(CS)←2000H③段间直接转移注:直接地址为符号地址时,段间直接转移指令中的符号地址前应加操作符FARPTR。
例:JMP FARPTR
far_label
其中的far_label为远类型的标号。④段间间接转移
转移的目的地址(段和偏移)在两个相邻的字存储单元中。例如: JMPDWORDPTR[SI]
设指令执行前:(DS)=4000H,(SI)=1212H,(41212H)=1000H,(41214H)=4A00H则指令执行后:(IP)=1000H,(CS)=4A00H。(2)条件转移指令Jcc格式为:
JccLabel ;Label是转移的目标地址Jcc指令包括下列3类:(1)测试单个标志位。(2)用于带符号数比较。(3)用于无符号数比较。条件转移指令只能是段内直接转移,且指令的转移范围为指令所在位置的-128~+127字节。
JC ;CF=1,则转移
JNC ;CF=0,则转移
JE/JZ;结果为零(ZF=1),则转移
JNZ/JNE;结果不为零(ZF=0),则转移
JP/JPE;奇偶标志PF=1(偶),则转移
JNP/JPO
;奇偶标志PF=0(奇),则转移
JS;符号标志SF=1,则转移
JNS;符号标志SF=0,则转移
JO ;溢出标志OF=1,则转移
JNO ;溢出标志OF=0,则转移根据CX内容来决定是否转移的转移指令
JCXZlabel;若(CX)=0,则转移到label处开始执行。i根据单个标志位设置的条件转移指令ii判断无符号数的大小JA/JNBE
;高于/不低于且不等于,则转移(A>B) 条件为:CF=0且ZF=0JAE/JNB
;高于或等于/不低于,则转移(A≥B) 条件为:CF=0或ZF=1JB/JNAE
;低于/不高于且不等于,则转移(A<B) 条件为:CF=1且ZF=0JBE/JNA
;低于或等于/不高于,则转移(AB) 条件为:CF=1或ZF=1iii判断有符号数的大小JG/JNLE
;大于/不小于且不等于,则转移(A>B) 条件为:(SF⊕OF=0)且ZF=0JGE/JNL
;大于或等于/不小于,则转移(A≥B) 条件为:(SF⊕OF=0)或ZF=1JL/JNGE
;小于/不大于且不等于,则转移(A<B) 条件为:(SF⊕OF=1)且ZF=0JLE/JNG
;小于或等于/不大于,则转移(A≤B) 条件为:(SF⊕OF=1)或ZF=1例:将AX与BX中两无符号数的较大数存WMAX单元。CMPAX,BX;比较AX和BX
JAEnext ;若AX≥BX,转移
XCHGAX,BX;AX<BX,交换next: MOVWMAX,AX;存较大数如果AX和BX存放的是有符号数,则条件转移指令应采用JGE指令例:地址为DATA的存储单元中存放着一个带符号的16位数,若该数为正,则CX=1;若该数为负,则CX=FFFFH;若该数为0,则CX=0。MOVAX,DATAANDAX,AXJEZEROJNSPLUSMOVCX,0FFFFHJMPDONEZERO:MOVCX,0JMPDONEPLUS:MOVCX,1DONE:HLT2循环控制指令用在循环程序中以确定是否要继续循环。循环次数通常置于CX中。转移的目标应在距离本指令-128~+127的范围之内。循环控制指令不影响标志位。格式:LOOPlabel操作:(CX)-1→CX;若(CX)≠0,则转至label处执行;否则退出循环,执行LOOP后面的指令。
LOOP指令与下面的指令段等价:
DECCX JNZlabel(1)循环转移指令LOOP(2)LOOPZ(LOOPE)格式:LOOPZlabel操作:(CX)-1→CX;若(CX)≠0且ZF=1,则转至label处继续循环;否则退出循环,执行LOOP后面的指令。(3)LOOPNZ(LOOPNE)格式:LOOPNZlabel操作:(CX)-1→CX;若(CX)≠0且ZF=0,则转至label处继续循环;否则退出循环,执行LOOP后面的指令。3过程调用和返回指令过程(子程序):
一段具有特定功能的,供其它程序调用的公用程序。特点调用子程序时,IP(CS)的内容被压入堆栈栈顶。从子程序返回时,栈顶的内容又被弹出到IP(CS)。子程序执行结束后一般均要返回调用程序。一次定义,可多次调用;可带参数调用,以完成不同的功能。(1)调用指令CALL一般格式:CALL
sub;sub为子程序的入口。根据子程序入口的寻址方式,子程序调用有四类。①段内直接调用
子程序的偏移地址直接由CALL指令给出。格式:CALLNEAR_PROC
CALL执行时,它首先将IP内容压栈,然后把指令中给出的位移量加到IP上。
②段内间接调用子程序的偏移地址在寄存器或存储器中。格式:CALL
mem16/reg16 CALL执行时,它首先将IP内容压栈,然后把指定的寄存器/存储器的内容送入IP。例:
CALLAX
;调用地址由AX给出
CALLWORDPTR[SI]
;调用地址由存储器给出.例:对于CALLWORDPTR[SI]这条指令若:(DS)
=
8000H,(SI)
=
1200H则指令操作图示如下。CALLIPHIPL代码段数据段81200H81201H③段间直接调用
子程序的段地址和偏移地址直接由CALL指令给出。格式:CALLFAR_PROC;FAR_PROC为远过程的地址指令的操作:((SP)-1,(SP)-2)←(CS);原CS压栈 SP←(SP)-2
CS←新段地址
((SP)-1,(SP)-2)←(IP);原IP压栈 SP←(SP)-2
IP←新偏移地址例:CALL 2000H:1000H④段间间接调用
子程序的段地址和偏移地址为存储器的连续4个单元中的内容。格式:CALL
mem32指令的操作为:((SP)-1,(SP)-2)←(CS);原CS压栈 SP←(SP)-2 CS←(mem32+2)
((SP)-1,(SP)-2)←(IP);原IP压栈 SP←(SP)-2 IP←(mem32)例:CALLDWORDPTR[DI]
调用地址在[DI],[DI]+1,[DI]+2,[DI]+3四个存储单元中。低字内容为偏移地址,高字内容为段地址。CALL代码段数据段IPHIPLCSHCSL[DI][DI]+1[DI]+2[DI]+3CALLDWORDPTR
[DI]
(2)返回指令RET段内返回指令RET的操作为: IP←((SP)+1,(SP));栈顶内容弹出到IP SP←(SP)+2段间返回指令RET的操作为: IP←((SP)+1,(SP));栈顶内容弹出到IP SP←(SP)+2 CS←((SP)+1,(SP));栈顶内容弹出到CS SP←(SP)+2另有一种带立即数返回指令:RETn 其中n为偶数,表示从栈顶弹出地址后另外丢弃的字节数。 例:RET4;返回后再丢弃栈顶的4个字节4中断控制指令
8086/8088CPU在程序中允许安排一条中断指令来引起一个中断过程,这种中断叫内部中断,或叫软中断。中断指令共有三条:
(1)INTn执行类型n的中断服务程序,N=0~255(2)INTO
执行溢出中断的中断服务程序;
(3)IRET
从中断服务程序返回调用程序。(1)INTn;n=0~255,为中断类型号本指令的操作步骤为:①((SP)-1,(SP)-2)←(FLAGS),SP←(SP)-2
保护标志寄存器的内容②IF←0,TF←0
中断服务程序中禁止外部INTR中断和单步中断③((SP)-1,(SP)-2)←(CS),SP←(SP)-2,CS←(n*4+2) 中断服务程序的段地址送入CS。n*4为向量地址。该向量地址中的内容即为中断服务程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论