版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、四 控制转移指令转移类指令 循环控制指令 过程调用和返回指令中断控制类指令2 循环控制指令用在循环程序中以确定是否要继续循环。循环次数通常置于CX中。转移的目标应在距离本指令-128+127的范围之内。循环控制指令不影响标志位。格式:LOOP label操作:(CX)-1CX; 若(CX)0,则转至label处执行; 否则退出循环,执行LOOP后面的指令。 LOOP指令与下面的指令段等价: DEC CX JNZ label(1)循环转移指令LOOP(2) LOOPZ (LOOPE)格式:LOOPZ label操作:(CX)-1CX; 若(CX)0且ZF=1,则转至label处继续循环; 否则退
2、出循环,执行LOOP后面的指令。(3) LOOPNZ (LOOPNE)格式:LOOPNZ label操作:(CX)-1CX; 若(CX)0且ZF=0,则转至label处继续循环; 否则退出循环,执行LOOP后面的指令。3 过程调用和返回指令 过程(子程序): 一段具有特定功能的,供其它程序调用的公用程序。 特点调用子程序时,IP(CS)的内容被压入堆栈栈顶。从子程序返回时,栈顶的内容又被弹出到IP(CS)。子程序执行结束后一般均要返回调用程序。一次定义,可多次调用;可带参数调用,以完成不同的功能。(1)调用指令CALL一般格式:CALL sub ; sub为子程序的入口。根据子程序入口的寻址方
3、式,子程序调用有四类。 段内直接调用子程序的偏移地址直接由CALL指令给出。 格式:CALL NEAR_PROC CALL执行时,它首先将IP内容压栈,然后把指令中给出的位移量加到IP上。段内间接调用子程序的偏移地址在寄存器或存储器中。 格式:CALL mem16/reg16 CALL执行时,它首先将IP内容压栈,然后把指定的寄存器/存储器的内容送入IP。例: CALL AX ;调用地址由AX给出CALL WORD PTRSI ;调用地址由存储器给出.例:对于 CALL WORD PTR SI这条指令若:(DS) = 8000H,(SI) = 1200H则指令操作图示如下。CALL IPH I
4、PL代码段数据段81200H81201H段间直接调用 子程序的段地址和偏移地址直接由CALL指令给出。 格式:CALL FAR_PROC ;FAR_PROC为远过程的地址指令的操作: (SP)-1,(SP)-2)(CS) ;原CS压栈 SP(SP)-2 CS新段地址(SP)-1,(SP)-2)(IP) ;原IP压栈 SP(SP)-2 IP 新偏移地址例:CALL2000H:1000H段间间接调用子程序的段地址和偏移地址为存储器的连续4个单元中的内容。 格式:CALL mem32指令的操作为: (SP)-1,(SP)-2)(CS) ;原CS压栈 SP(SP)-2 CS(mem32+2) (SP)
5、-1,(SP)-2)(IP) ;原IP压栈 SP(SP)-2 IP(mem32)例:CALL DWORD PTRDI 调用地址在DI,DI+1,DI+2,DI+3四个存储单元中。低字内容为偏移地址,高字内容为段地址。CALL代码段数据段 IPH IPL CSH CSLDIDI+1DI+2DI+3CALL DWORD PTR DI(2)返回指令RET段内返回指令RET的操作为: IP(SP)+1,(SP) ;栈顶内容弹出到IPSP(SP)+2段间返回指令RET的操作为: IP(SP)+1,(SP) ;栈顶内容弹出到IP SP(SP)+2 CS(SP)+1,(SP) ;栈顶内容弹出到CSSP(SP
6、)+2另有一种带立即数返回指令:RET n其中n为偶数,表示从栈顶弹出地址后另外丢弃的字节数。例:RET 4 ;返回后再丢弃栈顶的4个字节4 中断控制指令8086/8088 CPU在程序中允许安排一条中断指令来引起一个中断过程,这种中断叫内部中断,或叫软中断。 中断指令共有三条: (1) INT n 执行类型n的中断服务程序,N=0255 (2) INTO 执行溢出中断的中断服务程序; (3) IRET 从中断服务程序返回调用程序。四 串操作指令字符串传送指令MOVSB/MOVSW字符串比较指令CMPSB /CMPSW 字符串检索指令SCASB/ SCASW取字符串指令 LODSB /LODS
7、W存字符串指令 STOSB/STOSW串:顺序放在内存中的一组相同类型的数据。串操作:对串中的元素进行相同的操作。串操作的寻址方式:源操作数指针DS:SI(DS可重设)目的操作数指针ES:DI每次串操作后:串操作指令自动修改SI和DI字节:1,字:2。DF标志决定。注意:退出串操作后,指针指向最后操作的元素的 下一个元素。 功能:可完成存储单元到存储单元的传送、比较(也仅是串指令可以)。 有的串操作指令前面可加重复前缀。当使用重复前缀时,操作重复次数由CX决定(CX自动减量)。该指令重复执行,直至(CX)=0为止。注意:执行串指令之前,应先进行如下设置: 1)源串首地址(末地址) SI 2)目
8、的串首地址(末地址) DI 3)串长度 CX 4)建立方向标志(CLD使DF=0(增),STD使DF=1 (减) )(1)串传送指令MOVSB / MOVSW指令执行的操作为:MOVSB ; (ES):(DI)(DS):(SI) SI1, DI1 MOVSW ;(ES):(DI+1)(DI)(DS):(SI+1)(SI) SI2, DI2 注意: 原串用DS:SI寻址, 目标串用ES:DI寻址 是唯一的原操作数和目的操作数在存储器中的传送指令。 例: 在数据段ADDR1地址处有200个数据,要传送到数据段地址ADDR2处。MOV SI, OFFSET ADDR1MOV DI, OFFSET A
9、DDR2MOV CX, 200CLDREP MOVSBLEA SI, ADDR1LEA DI, ADDR2(2)串比较指令CMPSB / CMPSW指令执行的操作为:CMPSB ;(DS):(SI)-(ES):(DI) SI1, DI1 CMPSW ;(DS):(SI+1)(SI)-(ES):(DI+1)(DI) SI2, DI2 比较的结果只反映在标志位上,串本身无变化。本指令可用来检查两个串是否相等。与重复前缀REPZ/REPE、REPNZ/REPNE结合使用。(3)串扫描 SCASB / SCASW执行的操作: 对字节:(AL)(ES):(DI) DI1 对字: (AX)(ES):(DI
10、1)(DI) DI2搜索指令执行的仍是比较(减法)操作,结果只影响标志位。要搜索的关键字放在AL(字节)或AX(字)中。本指令用于在串中查找指定的信息。与重复前缀REPZ/REPE、REPNZ/REPNE结合使用。(4)串读取指令LODSB / LODSW执行的操作为: 对字节:(AL)(DS):(SI) SI1 对字:(AX)(DS):(SI+1)(SI) SI2 串读取指令通常不加重复前缀。LODSB等价于: LODSW等价于: MOV AL,SI MOV AX,SI INC SI INC SI INC SI (5)串存储指令 STOSB / STOSW 写指令的操作为: 对字节:(ES)
11、:(DI)(AL) DI1 对字 :(ES):(DI+1)(DI)(AX) DI2 本指令用于把一块存储区域填充成某一 初始值(即对存储区进行初始化)。例:把1000H开始的100个存储单元填入 ASCII码2AH(*)。程序段如下: MOV DI, 1000H ; 首地址 MOV AL, 2AH ; * MOV CX, 100 ; 重复执行100次 CLD ; 增量修改DI REPSTOSB本章小结80 x86指令的操作数包括3种形式:立即数、寄存器(通用寄存器和段寄存器)与内存操作数。对于内存操作数,由操作数的形式可计算出有效地址。在缺省情况下,其段地址隐含在段寄存器DS或SS中,除非由段
12、超越前缀明确给出。大多数指令(如传送类指令)的执行不影响标志位,某些指令(如算术指令)的执行按一般规则影响标志位,还有一部分指令(如逻辑指令)会按特定方式(清0、置1等)影响标志位。部分8086/8088常用指令指令类型助记符数据传送数据传送MOV,PUSH/POP,XCHG等地址传送LEA,LDS,LES输入输出IN,OUT算术运算加法ADD,ADC,INC减法SUB,SBB,DEC,NEG,CMP乘/除法MUL,IMUL,DIV,IDIV逻辑AND,OR,NOT,XOR,TEST移位SHL/SHR/SAR,ROL/ROR,RCL/RCR串操作MOVS,CMPS,SCAS,LODS,STOS
13、控制转移JMP,JXX,LOOP,CALL/RET,INT/IRET练习: 已知(AX)=1234H,执行下面3条指令后,(AX)=_. MOV BX,AX NEG BX ADD AX,BX0000H(2) 如执行 XOR AH,AH MOV AL,90H CWD 指令后,结果是_(DX,AX)=0000 0090H(3) 解析下面程序段,回答问题: MOV CX,DX NOT CX ADD CX,DX INC CX 问:(CX)=_,(ZF)=_0000H1(4) 下面指令序列完成的运算表达式应是_ MOV AL,BYTE PTR X SHL AL,1 DEC AL MOV BYTE PTR
14、 Y,ALY=2*X-1MOV CL , 8ROL AX , CLADD AX , BX(5) 已知 (AX)=0012H, (BX)=0043H,要求把它们形成(AX)=1234H 提示:可以用循环移位指令作 业1.指出下列指令的错误:(1) MOV AX,SIDI(2) MOV BX,SI(3) ADD AX,BYTE PTRBX(4) JMP BYTE PTRBX(5) OUT 230H, AX2.堆栈指针寄存器SP的初值为1000H,(AX)=2000H,(BX)=3000H,试问:(1)执行指令PUSH AX后,(SP)=( )(2)再执行指令PUSH BX和POP AX后,(SP=( ),(AX)=(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年国家公务员录用考试《申论》真题(地市卷)及答案解析
- 中班 秋天课件
- 2024年1月福建省普通高中学业水平合格性考试化学试题(原卷版)
- 社区少先队课件
- 苏教版科学课件
- 西南林业大学《材料研究及分析方法实验》2022-2023学年第一学期期末试卷
- 西京学院《新媒体短视频运营实训》2023-2024学年第一学期期末试卷
- 西京学院《前端开发技术》2021-2022学年期末试卷
- 颌下腺结石课件
- 西京学院《句法学概论》2022-2023学年期末试卷
- 配电设备的日常管理及维护保养(PPT41页)
- 电子琴伴奏及音色中英文对照表
- 苏教版初中化学常见气体的检验与除杂教案
- 网络教研——开辟校本教研新模式
- 火灾报警系统技术规范书
- 鱼塘租赁合同
- 教材自编传统节日校本课程
- 楼宇自控系统调试方案
- hydac压力继电器说明书
- 中成药上市公司组织架构及部门职责
- 《教育学原理》课程教学大纲
评论
0/150
提交评论