版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3.3.6 程序控制指令,控制转移指令分为: 循环控制指令 调用和返回指令 中断指令,转移指令的实质:改变IP(或CS)的内容。 所有转移指令不会影响标志位。 分为无条件转移和条件转移两种。,1.转移指令,(1) 无条件转移指令 - JMP 本指令无条件转移到指定的目标地址,以执行从该地址开始的程序段。根据设置CS、IP的方法,JMP指令分成4种情况。 段内直接转移: 指令中给出的8/16位的位移量加到IP。CS保持不变。 段内间接转移: REG/MEM中的16位偏移地址送IP。CS保持不变。 段间直接转移 指令中给出的16位的段和16位的偏移地址送到CS和IP。 段间间接转移 MEM中给出的
2、16位的段和16位的偏移地址送到CS和IP。,转移的目标地址由指令直接给出。指令中给出的目标地址实际上是一个相对于IP的位移量: 位移量 转移范围 汇编语言中格式 8位 -128+127 JMP SHORT OPRD 16位 -32768+32767 JMP NEAR PTR OPRD 例:JMP0120H ;直接转向0120H JMPSHORT LPI ;转向LPI JMPNEAR PTR BBB;转向BBB 由于是段内转移,故转移后CS内容保持不变。, 段内直接转移,段内间接转移 转移的目标地址由寄存器或存储单元的内容给出。 例:JMP SI 若指令执行前(SI)=1200H,则指令执行后
3、,(IP)=1200H,于是转向代码段的偏移地址1200H处执行。 注意:目标地址以段内偏移的形式给出,而不是相对于IP的位移量,所以它是一个16位的操作数。,例2:JMP BX+DI 设指令执行前: (DS)=3000H,(BX)=1300H, (DI)=1200H,(32500H)=2350H; 则指令执行后:(IP)=2350H 在汇编语言中,段内间接寻址通常写成: JMPWORD PTR BX+DI 表示所取得的目标地址是一个字。,段间直接转移 在指令中直接给出要转移到的目的段地址和偏移地址。 例:JMP2000:1000H 执行时,(IP)1000H,(CS)2000H 注:直接地址
4、为符号地址时,段间直接转移指令中的符号地址前应加操作符FAR PTR。 例:JMPFAR PTR far_label 其中的far_label为远类型的标号。,转移的目的地址(段和偏移)在两个相邻的字存储单元中。例如: JMPDWORD PTRSI 设指令执行前:(DS)=4000H,(SI)=1212H, (41212H)=1000H,(41214H)=4A00H 则指令执行后:(IP)=1000H,(CS)=4A00H 于是转到4B000H处开始执行指令。 例中的DWORD PTR表示转移地址是一个双字。,段间间接转移,条件转移指令可实现程序的条件分支。 条件转移指令根据标志位的状态来决定
5、是否进行分支转移。 格式: JCC label;CC为条件名称缩写 指令的转移范围为-128+127字节。,(2)条件转移指令 - JCC, 根据单个标志位设置的条件转移指令 JB/JC ;低于,或CF=1,则转移 JNB/JNC/JAE ;高于或等于,或CF=0,则转移 JP/JPE ;奇偶标志PF=1(偶),则转移 JNP/JPO ;奇偶标志PF=0(奇),则转移 JZ/JE ;结果为零(ZF=1),则转移 JNZ/JNE ;结果不为零(ZF=0),则转移 JS ;SF=1,则转移 JNS ;SF=0,则转移 JO ;OF=1,则转移 JNO ;OF=0,则转移,这类指令主要用来判断两个数
6、的大小。 判断无符号数的大小 JA 高于则转移 条件为: CF=0ZF=0,即AB JNA/JBE 低于或等于则转移 条件为: CF=1ZF=1,即AB, 根据组合条件设置的条件转移指令,JG ;大于则转移(AB) 条件为: (SFOF=0)ZF=0 JGE ;大于或等于则转移(AB) 条件为: (SFOF=0)ZF=1 JLE ;小于或等于则转移(AB) 条件为: (SFOF=1)ZF=1 JL ;小于则转移(AB) 条件为: (SFOF=1)ZF=0,判断有符号数的大小,2.循环控制指令,用在循环程序中以确定是否要继续循环。 循环次数通常置于CX中。 转移的目标应在距离本指令-128+12
7、7的范围之内。 循环控制指令不影响标志位。,(1)LOOP 格式:LOOP label 操作:(CX)-1CX; 若(CX)0,则转至label处执行; 否则退出循环,执行LOOP后面的指令。 LOOP指令与下面的指令段等价: DEC CX JNZ label (2)LOOPZ (LOOPE) 格式:LOOPZ label 操作:(CX)-1CX; 若(CX)0ZF=1,则转至label处执行; 否则退出循环,执行LOOP后面的指令。,(3)LOOPNZ (LOOPNE) 格式:LOOPNZ label 操作:(CX)-1CX; 若(CX)0ZF=0,则转至label处执行; 否则退出循环,执
8、行LOOP后面的指令。 循环指令的例子见下页。,例1:给1A000H开始的256个内存单元均减去1,若 发现某个单元减为0则立即退出循环,其后的单元不再减1。 MOV AX,1A00H MOV DS,AX MOV DI,0 MOV CX,256 GOON: DEC BYTE PTRDI INC DI CMP BYTE PTRDI-1,0 LOOPNZ GOON HLT,例2:在8000H开始的长度为1000字节的字符串中查找S,若找到,把其偏移地址记录在ADDR中,否则ADDR单元置为0FFFFH。 MOV DI,8000H MOV CX,1000 MOV AL, S MOV ADDR,0FF
9、FFH GOON: SCASB LOOPNZ GOON JNZ DONE DEC DI MOV ADDR,DI DONE: HLT,2. 子程序调用和返回,子程序是完成特定功能的一段程序。 当主程序(调用程序)需要执行这个功能时, 采用CALL调用指令转移到该子程序的起始处执行; 当运行完子程序功能后, 采用RET返回指令回到主程序继续执行。,主程序与子程序,CALL label,主程序,RET,子程序,回到CALL指令后的指令处 返回地址,子程序调用指令CALL,类似JMP指令,CALL指令可分成 4 种类型: CALL label ;段内调用、直接寻址 CALL r16/m16 ;段内调用
10、、间接寻址 CALL far ptr label;段间调用、直接寻址 CALL far ptr mem;段间调用、间接寻址 但不同于JMP指令,CALL指令需要保存返回地址: 段内调用入栈偏移地址IP: SPSP2,SS:SPIP 段间调用入栈偏移地址IP和段地址CS: SPSP2,SS:SPIP;SPSP2,SS:SPCS,子程序返回指令RET,根据段内和段间、有无参数,RET指令分成 4 种类型: RET;无参数段内返回 RET i16;有参数段内返回 RET;无参数段间返回 RET i16;有参数段间返回 RET指令弹出CALL指令压入堆栈的返回地址: 段内返回出栈偏移地址IP: IPS
11、S:SP, SPSP2 段间返回出栈偏移地址IP和段地址CS: IPSS:SP,SPSP2;CSSS:SP,SPSP2,i16参数的作用 调整堆栈指针SP,返回指令RET的参数,RET i16;有参数返回 RET指令可以带有一个立即数 i16, 返回时堆栈指针SP将增加,即SPSP+i16。 相当于一批参数出栈 这个特点使得程序可以方便地废除若干执行CALL指令以前入栈的参数。,返回指令RET的参数,断点地址IP,向子程序传递的参数,SP(返回前),SP(返回后),RET 5,;主程序 mov al,0fh;提供参数AL call htoasc;调用子程序 . ;子程序:将AL低4位(1位16
12、进制数)转换成ASCII码 htoasc:and al,0fh;只取al的低4位 or al,30h;al高4位变成3 cmp al,39h;是09,还是0Ah0Fh jbe htoend add al,7;是0Ah0Fh,加上7 htoend:ret;子程序返回,例2.47:主程序与子程序,3.中断指令,8086/8088 CPU在程序中允许安排一条中断指令来引起一个中断过程,这种中断叫内部中断,或叫软中断。 中断指令共有三条: (1)INT n 执行类型n的中断服务程序,N=0255 (2)INTO 执行溢出中断的中断服务程序 (3)IRET 从中断服务程序返回调用程序,(1)INT n
13、;n=0255,为中断类型号 本指令的操作步骤为: (SP)-1,(SP)-2)(FLAGS),SP(SP)-2 保护标志寄存器的内容 IF0,TF0 中断服务程序中禁止外部INTR中断和单步中断 (SP)-1,(SP)-2)(CS),SP(SP)-2,CS(n*4+2) 中断服务程序的段地址送入CS。n*4为向量地址。该向量地址中的内容即为中断服务程序入口地址。 (SP)-1,(SP)-2)(IP),SP(SP)-2,IP(n*4) 中断服务程序的偏移地址送IP。 INT指令只影响IF和TF, 对其余标志位无影响。 INT指令可用于调用系统服务程序,如INT 21H,(2)溢出中断INTO
14、INTO检查溢出标志OF,如果OF=1,则启动一个类型4的中断过程;如果OF=0,不做任何操作。 通常INTO指令安排在有符号数算术运算指令后面。如 IMULDX INTO ;若溢出,则启动INT 4,否则继续 MOVRESULT,AX MOVRESULT+2,DX ,用于从中断服务程序返回被中断的程序。任何中断服务程序不管是外部中断引起的,还是内部中断引起的,最后都要用IRET返回。 该指令执行的操作为: IP(SP)+1,(SP) ;栈顶内容弹出到IP SP(SP)+2 CS(SP)+1,(SP) ;栈顶内容弹出到CS SP(SP)+2 FLAGS(SP)+1,(SP) ;栈顶内容弹出到F
15、LAG SP(SP)+2,(3)中断返回指令IRET,3.3.7 处理器控制指令,1.标志操作指令 用来设置标志位的状态。 (1)CF设置指令 CLC 0CF STC 1CF CMC CF变反 (2)DF设置指令 CLD 0DF (串操作的指针移动方向从低到高) STD 1DF (串操作的指针移动方向从高到低) (3)IF设置指令 CLI 0IF (禁止INTR中断) STI 1IF (开放INTR中断),2.外部同步指令 (1)ESC换码指令 (2)WAIT等待指令 (3)LOCK封锁总线指令,执行HLT指令时,CPU进入暂停状态,设置该指令通常是为了等待中断。 外部中断(包括IF=1时的可
16、屏蔽中断请求INTR及非屏蔽中断请求NMI)或复位信号可让CPU退出暂停状态。 HLT不影响标志位。,3. 停机指令和空操作指令,(1)停机指令HLT,(2)空操作指令NOP,NOP指令不做任何实质性的操作,但占用3个时钟周期,然后执行下一条指令。 多用于延时或预留存储空间(占位子)。,1、假设(CS)=3000H, (DS)=4000H, (ES)=2000H, (SS)=5000H, (AX)=2060H, (BX)=3000H, (CX)=5, (DX)=0, (SI)=2060H, (DI)=3000H, (43000H)=0A006H, (23000H)=0B116H, (33000H)=0F802H, (25060H)=00B0H,.(SP)=0FFFEH, (CF)=1, (DF)=1, 请写出下列各条指令单独执行完后, 有关寄存器及存储单元的内容, 若影响标志位请给出标志位SF、ZF、OF、CF的值。 (1) SBB AX , BX (2) MUL BYTE PTRBX (3) AAM (4) DIVBH (5) SARAX , CL (6) XORAX , 0FFE7H (7) REPSTOSB (8) JM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广东广州市越秀区白云街道招聘综合事务中心辅助人员1人备考题库及1套完整答案详解
- 2026广西农业科学院园艺研究所柑橘育种研究室招聘编制外工作人员1人备考题库及答案详解参考
- 宜宾市2026年农业农村领域经营主体招聘备考题库(第一批)及答案详解一套
- 2026湖北恩施州顺鑫达劳务有限责任公司招聘劳务派遣工作人员1人备考题库完整答案详解
- 2026石河子泽众水务有限公司部分岗位社会招聘37人备考题库及参考答案详解
- 2026广东汕尾市海上搜救分中心招聘政府聘员1人备考题库及一套完整答案详解
- 2026上海市干部教育培训中心实习生招聘22人备考题库及一套完整答案详解
- 2026上海市宝山区卫生健康系统事业单位上半年招聘卫生专业技术人员165人备考题库及完整答案详解一套
- 2026江苏无锡市宜兴市卫生健康系统研究生校园招聘7人备考题库(第二批)及完整答案详解1套
- 2026都兰金辉矿业有限公司(国有企业)聘用人员招聘14人备考题库及1套完整答案详解
- 2026年cnas测试题及答案
- 2026年广东高考物理试卷及答案
- 2025贵州省贵阳市殡仪服务中心公开招聘(编外)工作人员25人考试参考试题及答案解析
- 植物生长环境课件
- 中建安装弧形管道施工方案
- 国家开放大学《森林保护》形考任务1-4参考答案
- 广东省深圳市红岭中学化学自主招生试卷
- 洞口开挖安全技术措施
- 2023年湖南省长沙市雨花区初中会考科目调研检测地理试题
- 人防区域顶板预留洞封堵方案
- GB/T 18422-2013橡胶和塑料软管及软管组合件透气性的测定
评论
0/150
提交评论