汇编语言程序设计-课件 -第三章(3)控制转移指令_第1页
汇编语言程序设计-课件 -第三章(3)控制转移指令_第2页
汇编语言程序设计-课件 -第三章(3)控制转移指令_第3页
汇编语言程序设计-课件 -第三章(3)控制转移指令_第4页
汇编语言程序设计-课件 -第三章(3)控制转移指令_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3.2.5控制转移指令控制转移类指令用于实现分支、循环、过程等程序结构,是汇编中的常用指令。1.无条件转移指令JMP指令格式:JMPLABLE

LABLE是将要转移到的目标地址,按LABLE是否与当前指令在一个代码段,无条件转移可分为段内转移和段间转移;而按LABLE的不同寻址方式又可分为直接寻址和间接寻址。直接寻址:转移地址在指令代码中。间接寻址:转移地址在寄存器或内存单元中。(1)段内转移:在当前代码段范围64KB内转移(±32KB范围)称为近转移(NEARPTR)。转移范围在段内-128~+127范围内称为短转移(SHORT)。段内转移CS段地址不变,只要改变IP偏移地址。

JMPSHORTLABLE ;短转移,直接寻址,目标地址为LABLEJMPNEARPTRLABLE;近转移,直接寻址,目标地址为LABLEJMPSI;间接寻址,目标地址在SI寄存器中JMPWORDPTR[BX];间接寻址,目标地址在内存单元中(2)段间转移:远转移(FARPTR)从当前代码段转移到另一个代码段(设为代码段2),转移范围1MB。需要改变CS段地址和IP偏移地址。因此目标地址必须用一个32位数表达。

指令JMPFARPTRLABLE的功能是远转移到代码段2的LABLE,IP←[LABLE],CS←[代码段2的段地址]。

指令JMPFARPTRMEM,其中MEM是内存单元的地址,从MEM开始的4个连续单元中存放着2个16位的地址,一个是目标地址的偏移地址,一个是目标地址的段地址。即IP←[MEN],CS←[MEM+2]。

2.条件转移语句JCC条件转移语句都是段内短转移。条件转移指令的一般格式为:JCCLABLE

指令中的条件即为状态标志的状态,条件转移指令可分成三类:判断单个标志位状态、比较无符号数高低、比较有符号数大小。(1)判断单个标志位状态①JZ/JE和JNZ/JNE②JS和JNS③JO和JNO④JP/JPE和JNP/JPO⑤JC/JB/JNAE和JNC/JNB/JAE(2)比较无符号数高低(条件为一个标志或标志组合)指令中的A表示高(Above),B表示低(Below),利用CF确定高低、利用ZF标志确定相等。JB/JNAE/JCJNB/JAE/JNCJBE/JNAJNBE/JA(3)比较有符号数大小(条件为标志组合)指令中的G表示大(Greater),L表示小(Less)JL/JNGEJNL/JGEJLE/JNGJNLE/JG例:在AL,BL,CL中有三个有符号数,找出最大数存于AL中。

CMP AL,BL

JG LL XCHG AL,BLLL: CMP AL,CL

JG EXIT XCHG AL,CLEXIT:例:AL寄存器中存放一个字符,如果是数字字符,则改为*。

CMP AL,'0'

JB EXIT

CMP AL,'9'

JA EXIT

MOV AL,'*'EXIT:

(4)测试CX的值为0,则转移的指令指令格式:JCXZLABLE

3.循环控制指令循环指令默认利用CX计数器,属于段内短转移。指令格式:LOOPLABLELOOPZ/LOOPELABLELOOPNZ/LOOPNELABLE

例:求1+3+5+7+……19,结果存于AX寄存器中。 MOV AX,0 MOV CX,10 MOV BX,1AGAIN: ADD AX,BX ADD BX,2 LOOP AGAIN ……4.子程序调用及返回指令(1)子程序调用指令CALLCALL指令位于主程序,CALL调用的子程序与CALL指令可以处于同一代码段内,也可以在不同的代码段,因而分段内调用和段间调用。段内直接调用、段内间接调用、段间直接调用、段间间接调用。CALLNEARPTRLABLECALLR16/M16CALLFARPTRLABLE

CALLMEM(2)返回指令RET是子程序最后执行的指令。根据子程序与主程序是否同处于一个代码段内,返回指令也分为段内返回和段间返回。RETRETnRETRETn

RETn为有参数返回,n为1个16位立即数,则堆栈指针SP将增加,即SP←SP+n。主要用于程序可以方便地从堆栈中去除若干执行CALL指令以前入栈的参数,因为这些参数在子程序返回后就不再需要了。将AL中的数转换成2位十进制数的ASCII码,存于BX寄存器中。设AL=20H=32D,则BH=33H,BL=32H。主程序: MOV AL,20H CALL PROC …… PROC: MOV AH,0 MOV CL,10 DIV CL OR AL,30H MOV BH,AL OR AH,30H

MOV BL,AH RET3.2.7处理器控制指令1.空操作指令NOP2.指令封锁前缀指令LOCK3.暂停指令HLT4.交权指令ESC5.等待指令WAIT6.标志操作指令CLCSTCCMCCLDSTDCLISTI3.2.8输入输出指令1.端口

2.输入输出指令IN和OUT指令格式:INAL,nOUTn,ALINAX,nOUTn,AXINAX,DXOUTDX,ALINAL,DXOUTDX,AX3.2.9

中断指令和中断返回指令1.中断的概念

2.中断的类型3.中断处理程序4.中断向量表5.中断指令指令格式:INTnIRETINTO6.中断指令执行过程(1)取中断类型号n,n×4作为中断

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论