第5章程序控制指令中断.ppt

上传人:王** 文档编号:614923 上传时间:2023-12-08 格式:PPT 页数:77 大小:841KB
下载 相关 举报
第5章程序控制指令中断.ppt_第1页
第1页 / 共77页
第5章程序控制指令中断.ppt_第2页
第2页 / 共77页
第5章程序控制指令中断.ppt_第3页
第3页 / 共77页
第5章程序控制指令中断.ppt_第4页
第4页 / 共77页
第5章程序控制指令中断.ppt_第5页
第5页 / 共77页
第5章程序控制指令中断.ppt_第6页
第6页 / 共77页
第5章程序控制指令中断.ppt_第7页
第7页 / 共77页
第5章程序控制指令中断.ppt_第8页
第8页 / 共77页
第5章程序控制指令中断.ppt_第9页
第9页 / 共77页
第5章程序控制指令中断.ppt_第10页
第10页 / 共77页
亲,该文档总共77页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第5章程序控制指令中断.ppt》由会员分享,可在线阅读,更多相关《第5章程序控制指令中断.ppt(77页珍藏版)》请在优知文库上搜索。

1、第5章 程序控制指令程序控制指令程序控制指令 控制程序流向。程序控制指令包括:转移、循环、调用、返回、中断。无条件转移(JMP),允许程序转移到存储器的任何地址 执行下一条指令。条件转移Jnnn 则是根据对标志寄存器数据的测试(TEST)或比较(CMP)来决定转移的地址。5.1 程序控制:JMP,loop,Call,无条件转移指令JMPJMP SHORT addressJMP NEAR PTR addressJMP addressJMP FAR PTR ADDRESS 条件转移指令 Jnnn 短地址循环指令LOOP条件循环指令LOOPnnnn*比较指令 CMP5.2 调用过程 :Call 与

2、RET5.3 中断服务中断中断向量表INT 指令与执行IRET 指令与执行指令标号JMP的操作数的操作数,Jnnn(条件转移条件转移),和LOOP 指令,由另一条指令的标号决定。例:JMP P50 P50:INC CX 指令的标号是近属性指令的标号是近属性,在同一个代码段内,标号在过程之中。(指令标号)可以在单独的一行写标号可以在单独的一行写标号 P50:INC CX两种情况下,P50的地址都与INC 指令的第一个字节相关联。无条件转移指令无条件转移指令JMP JMP 指令是无条件的,在所有情况下都会转移,允许程序允许程序转移转移到存储器的任何到存储器的任何地址执行下一条指令。地址执行下一条指

3、令。不影响操作位不影响操作位。操作操作:(IP)(IP)+位移值位移值(CS)目标段的目标段的(CS)短,近和远地址汇编程序支持三种类型的地址,是根据它们与当前地址的距离当前地址的距离加以区别的。(无条件转移指令JMP)格式格式:标号标号:JMP 短短,近近,或者远地址或者远地址 标号标号/寄存器寄存器/内存内存(短,近和远地址)1)短地址:对距离的限制是128 到到 127(27)字节字节.1-字节字节 偏移偏移2)近地址近地址:对距离的限制是32768 到到 32767(215)字节.2-字节偏移字节偏移,在同一段内在同一段内3)远地址:同一段内,距离可以超过32K(215)或者在其或者在

4、其他段内他段内。段:偏移。段:偏移。实模式下:JMP SHORT address;地址是8 位的 位移量JMP NEAR PTR address;地址是 16位的位移量JMP address;地址是8/16位的位移量)JMP FAR PTR ADDRESS;地址是32位的位移量(无条件转移指令JMP)短 EB 8位位移 近 E9 低8位 高 8位 远 EA IP 低 IP 高 CS 低 CS 高无条件转移指令JMP 短短/近近/远地址远地址短转移短转移格式格式:JMP 短地址短地址JMP 地址地址;地址是 8位的位移量;short 是虚拟操作符是虚拟操作符,它迫使CPU做短转移操作操作:(IP

5、)(IP)+8位位移量位位移量(短转移)因为短转移的是相对转移,因此,短转移可以重定位。如果代码段移动到新的位置,然而JMP到标号的距离并没有改变,所以只需移动代码段来进行重定位。用JMP 指令(短,近)例:0000 33 BD XOR BX,BX0002 D80001 START:MOV AX,1 0009(IP)0005 03 C3 ADD AX,BX +0017(shift)0007 EB 17 JMP SHORT NEXT 0020(T.A.)0020 8BD8 NEXT:MOV BX,AX 0024(IP)0022 EBDE JMP START +FFDE(shift)(1)0002

6、(T.A.)(短转移)近转移格式格式:JMP NEAR PTR address;标号JMP在在JMP后面后面,地址是16位的位移量;NEAR PTR 是虚拟操作符,强迫CPU进行近转移JMP address;标号在JMP之后之后,地址是16位位移量操作操作:(IP)(IP)+16位位移量(近转移)超过了-128到+127字节的JMP就变成了近转移(32k范围内),对于近转移,汇编程序产生不同的机器码(E9)和两个字节的操作数。能够重定位。3 35(近转移)例例 8-2:XOR BX,BX START:MOV AX,1 ADD AX,BX JMP NEAR PTR NEXT NEXT:MOV B

7、X,AX JMP START远转移远转移JMP FAR PTR ADDRESS;地址是32 位位移量位位移量(地址);FAR PTR是虚拟操作符,强迫CPU远转移超过超过32KB 字节字节(实模式实模式的内存 系统统)JMP就变成了远转移远转移(从一个段到另一个段从一个段到另一个段).(远转移)1)JMP FAR PTR ADDR A3129;ADDR 是32位的地址 A3128;FAR PTR 是远转移虚拟操作符 A3127例:4 字节的操作数 代替CS 和 IP的内容 内存To hereA3000127JMP10004 10003 10002 10001 10000(远转移)2)如果为远转

8、移定义一个标号 作为远标号,远标号在当前代码段或者过程之外。标号在当前代码段或者过程之外。例:EXTERN UP:FAR ;定义UP 作为远标号(远转移)3)使用双冒号使用双冒号(:)来定义一个远标号来定义一个远标号.例:EXTRN UP:FAR ;定义UP 作为远标号START:MOV AX,1 ;定义START 作为标号 JMP FAR PTR START ;远转移 JMP UP ;远转移寄存器间接转移寄存器间接转移寄存器间接转移,用16 位位 或或 32位的寄存器位的寄存器作为操作数作为操作数,转移地址在寄存器内。转移地址在寄存器内。注意:寄存器间接转移指令间接转移指令直接传送寄存器直接

9、传送寄存器内容到指令指针寄存器中内容到指令指针寄存器中(IP).例:JMP AX ;复制AX寄存器的内容 到 IP中内存间接转移 转移的目标地址转移的目标地址,存储在数据段内存单元中在数据段内存单元中。例:JMP TABLESI 转移指令用格式 来访问转移目标地址,这包含了近地址间接转移间接转移 或者或者 段地址和偏移地址的远地址的间接转移。远地址的间接转移。除非用FAR PTR指明远转移指令,否则汇编程序默认是近转移。条件转移指令条件转移指令 处理器支持各种条件转移指令 这些指令的操作由标志寄存器的位设置所决定标志寄存器的位设置所决定。格式格式:标号标号:Jnnn 短地址短地址 例:DEC

10、CX JNZ A20 (条件转移指令)对于对于8086286 的的JMP 和和LOOP,条条件转移件转移必须是必须是短距离的短距离的,在,在128 到到+127 字节内字节内.80386 和更新的处理器允许在任何32K(=215)内的地址转移。有符号和无符号数据 无符号的数据项(逻辑数据)把所有的位作为数据位。例如用户编号和电话号码。有符号的数据项(算术数据)把最左边的位当做符号来处理,其中0为正而1为负。例如距离和数量,可以是正,也可以是负。Unsigned data signed data Distinguish sequence between unsigned and signed d

11、ata(有符号和无符号数据)例:假定(CX)=1100 0110,(DX)=0001 0110 CMP CX,DX 当成无符号数据,(CX)比较大;当成有符号数据,(DX)比较大;无符号(逻辑)数据的转移无符号(逻辑)数据的转移 符号符号 说明说明测试测试标志标志JE/JZ相等则转移或为零则转移Z=1JNE/JNZ 不相等则转移或不为零则转移Z=0JA/JNBE 高于则转移或不低于/等于则转移C=0&Z=0JAE/JNB 高于/等于则转移或不低于则转移C=0JB/JNAE 低于则转移或不高于/等于则转移C=1JBE/JNA 低于/等于则转移或不高于则转移C=1or Z=1这些条件转移中的每一个

12、都可以用两个符号操作中的一个来表示,应该选择比较清楚或比较能说明问题的那一个。有符号(算术)数据的转移有符号(算术)数据的转移符号符号 说明说明测试测试标志标志JE/JZ相等或为零则转移Z=1JNE/JNZ 不相等或不为零则转移Z=0JG/JNLE 大于则转移或不小于/等于则转移S=0&Z=0JGE/JNL 大于/等于则转移或不小于则转移S=0 JL/JNGE 小于则转移或不大于/等于则转移S=1JLE/JNG 小于/等于则转移或不大于则转移S=1 or Z=1 JE/JZ 和和 JNE/JNZ的转移在无符号与有符号数据的的转移在无符号与有符号数据的两个表中都有,两个表中都有,这是因为条件的存

13、在于有没有符号无关。专用的算术运算测试符号符号 说明说明测试标志测试标志JCXZ若若CX=0则转移则转移noneJC进位为1则转移(C=1)C=1JNC进位为0则转移(C=0)C=0JO溢出则转移O=1JNO不溢出则转移 O=0LP/LPE奇偶位为1/奇偶位为偶则转移P=1JNP/JPO奇偶位为0/奇偶位为奇则转移P=0JS符号位为1(负)则转移S=1JNS符号位为0(正)则转移S=0专用的算术运算测试JCXZ 测试CX的内容是否为零,不影响也不测不影响也不测试试标志位.有符号有符号数据的转移是相等,大于相等,大于,或,或 小于小于无符号无符号数据的转移是相等,高于,或相等,高于,或 低于低于

14、。loop指令指令格式格式:标号标号:LOOP 短地址短地址 (CX)0时,一直时,一直循环循环。(loop指令)loop指令 循环指定的次数循环指定的次数 或或者 循环循环直到满足指定的条件为止直到满足指定的条件为止,要求在在CX中有一个初始值中有一个初始值。(loop指令)对于每次迭代,LOOP自动从CX中减1.(CX)=(CX)-1 一旦CX达到零,转到下一条指令。如果CX是非零,则转移到操作数的地址。(loop指令)CX=循环次数循环次数(CX)=(CX)-1(CX)=0?运行loop 程序(跳到短地址)NY下条指令(loop指令)loop指令指令 转移的距离必须是短距离转移的距离必须

15、是短距离,转移的距离范围在转移的距离范围在128 到到+127个字节。不影响标志位不影响标志位。0113 FFF9 1 010C条件条件 LOOP指令LOOPE/LOOPZ Z=1 and(CX)0时,保持循环 Z1或(CX)=0时,退出循环LOOPNE/LOOPNZ Z=0 and(CX)0时,保持循环 Z0 或(CX)=0时,退出循环比较指令比较指令 CMP格式格式:标号标号:CMP 寄存器寄存器/内存内存,寄存器寄存器/内存内存/立即数立即数 CMP把第一个操作数和第二个操作数把第一个操作数和第二个操作数相相减减,置位置位/清位清位标志位标志位(A,C,O,P,S),但是不存储结果不存储

16、结果。可以使用CMPS指令比较数据串(字符)(寄存器间接转移)例:;程序从键盘读入1,2,3;当你键入1,2,3 时,程序展示1,2,3 .MODEL SMALL ;选择SMALL 模式 .DATA ;指明数据段的开始TABLE DW ONE ;定义转移列表 DW TWO DW THREE .CODE ;指明代码段的开始 .STARTUP ;指明程序的开始(寄存器间接转移)TOP:MOV AH,1 ;从键盘读入数字 INT 21H ;发送(ASCII)给 AL SUB AL,31H ;把1,2,3 转移到0,1,2 JB TOP ;比1小 CMP AL,2 JA TOP ;比3大 MOV AH,0 ;0,1,2,成倍,变成0,2,4 ADD AX,AX ;转移列表中的位地址 MOV SI,OFFSET TABLE;SI中装入列表起始地址 ADD SI,AX ;把0,2,4 加到转移列表 MOV AX,SI ;从列表进行ONE,TWO,THREE的 ;加法 JMP AX ;转移到 ONE,TWO,THREE ONE:MOV DL,1 ;装入1 JMP BOT ;展示 1TWO:MOV D

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!