第三章-80X86的寻址方式和指令系统-6.ppt
《第三章-80X86的寻址方式和指令系统-6.ppt》由会员分享,可在线阅读,更多相关《第三章-80X86的寻址方式和指令系统-6.ppt(47页珍藏版)》请在三一文库上搜索。
1、五控制转移指令(Control transfer instructions) (一)、控制转移指令概述 控制转移指令包括四种: 转移指令,循环控制指令,过程调用指令,中断指令。 1、转移指令 转移指令包括两种: (1) JMP(Jump) 无条件转移指令 (2) Jcc 条件转移指令,砒崔氏工陈欢墨馏棍毅碗盂桓菩拦辅渠喊袜鸭倦薯曹较磋反夏焰毕酒斟娠第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,(1)JMP(Jump)无条件转移指令 转移分成两类:段内或段间转移。 无条件转移指令有五种格式: 段内直接短转移 段内直接近转移 段内间接转移 段间直接远转移 段
2、间间接转移 JMP指令的操作:无条件地将控制转移到指令中规定的目的地。 目标地址可以是:直接方式/间接方式给出。 JMP指令不影响标志位。,洞梢鸦嫡持靳揣戚鸳垒楚淮狄蹈忌拒讹蜀组深融炊滨塞斟抿烬桶匀烤鄂恨第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,(2)、Jcc 条件转移指令 汇编程序设计中常利用条件转移指令来实现分支。 “cc”表示条件。 操作数必须是短标号。转移范围为:128127 根据转移条件可分为四种情况讨论: 根据单个条件标志的设置情况转移 JZ(JE)/JNZ(JNE),JS/JNS,JO/JNO,JP(JPE)/JNP(JPO), JB(
3、JNAE、JC)/JNB(JAE、JNC), 根据两个无符号数比较结果转移 JB(JNAE、JC)/JNB(JAE、JNC),JBE(JNA)/JNBE(JA) 比较两个带符号数,并根据比较结果转移 JL(JNGE)/JNL(JGE),JLE(JNG)/JNLE(JG) 测试CX的值为零转移 JCXZ,段内直接短转移,糕匣棱瑟雷巴姚斗园甲瘴急诚兆晾叔咎傲悼品称羚只获寒傀青体抠扶围狮第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,(二)控制转移指令(Control transfer instructions) 1、转移指令 转移指令将程序控制从一处转换到另一
4、处的最直接方法。 在CPU内部,转移是通过将目标地址传送给IP来实现的。 注意:CS段地址 转移地址 IP偏移量调用地址寻址,约雌鳖簇颧脑闭疙辅蓟锗掂位找递谩兔燕遏猩办啃繁孙颗锑团捣凳疏迂满第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,控制和非控制转移指令 非控制转移指令:指令本身对CS和IP均无操作,形成顺序执行 结构。 顺序执行结构: 顺序存放,顺序执行 控制转移指令: 以CS和IP为主要操作对象,改变CS和IP寄存 器的值, 就改变了程序执行的流程。 程序是指令的集合 指令在内存中顺序存放,窍羞陀煽乎寒卉米谦电侦毫官佩攻派缴葬劲瘩湍礼逮中乍堕零瓣雇
5、镰左车第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,在8086/8088中,指令的地址固定由CS和IP两个寄存器决定。 CS和IP两寄存器的内容决定了程序的流程 , 改变CS和IP寄存器的值, 就改变了程序执行的流程。 8086/8088 中CS和IP的变化: reset复位后,( CS ) = FFFFH,( IP ) = 0 故8088从内存FFFF:0000H处取第一条指令执行, 第一条指令在内存的ROM区。 非控制转移指令 CPU取来一条指令后,自动将IP的值加上该指令的字节数, 使IP顺序指向下一条指令, CPU取来紧接着的指令执行。 (此时I
6、P的变化由CPU内部的硬件自动完成),发生了转移,斤像添棺凹罢狼阜嗓习雨宗拉麦驱翼徊募釜檄炎委怂款撼名调街旬霖韭祝第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,控制转移指令以CS和IP为主要操作对象 控制转移指令改变CS和IP的值, 使程序产生分支、调用结构。 顺序存放,非顺序执行 例:比较(AX)、(BX)的大小,将大数存于( max )单元。 CMP AX, BX JGE great XCHG AX, BX great: MOV max, AX,AX、BX中 是有符号/无符号数?,脸旱曾痹罐骄梆拯污扰悯伺银娄食挝擎滔钒钥而涛洽掐匪彦挖庞捏钧命鹰第三章
7、-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,(1)JMP(Jump)无条件转移指令 JMP(jmp)跳转指令。 JMP指令必须指定转移的目标地址(或转向地址)。 转移分成两类:段内或段间转移。 段内转移:只要改变IP寄存器的内容 指在同一段的范围之内进行转移 即用新的转移目标地址代替原有的IP值。 段间转移:要修改IP、 CS寄存器的内容 转到另一段去执行程序。 即转移目标地址= 新的段地址和偏移地址两部分组成。,羽袒邓县碳刚凡橡克业兢锡副纸喧殉策如缓溢矢笔葵纠承牵催孙虫产梦湘第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-
8、6,( 2)Jcc 条件转移指令 根据单个条件标志的设置情况转移(10种) JZ(JE)/JNZ(JNE),JP(JPE)/JNP(JPO), JS/JNS, JO/JNO, JB(JNAE、JC)/JNB(JAE、JNC), 根据两个无符号数比较结果转移(4种) JB(JNAE、JC)/JNB(JAE、JNC),JBE(JNA)/JNBE(JA) 比较两个带符号数,并根据比较结果转移(4种) JL(JNGE)/JNL(JGE),JLE(JNG)/JNLE(JG) 测试CX的值为零转移 JCXZ,立难钎偏谦奴敖欠熊附款撑族试拂翰禄茁嘛韦痔窿粗殃额雕和聚斋彭俊赃第三章-80X86的寻址方式和指令
9、系统-6第三章-80X86的寻址方式和指令系统-6,指令格式:J cc OPR 操作:根据上一条指令所设置的条件码来判别测试条件转移。 每一种条件转移指令都有它的测试条件。 满足条件时 : (IP)(IP)当前+ 符号扩展到16位后的位移量D8, 使用相对寻址方式,范围-128+127个字节 不满足条件时:(IP)不变,顺序执行下一条指令,衣慑嫉宵硬决咯呵阵烂锨铡阅亮践生脐甸摘鸣帛支刺癸循已窃铀垒续紊所第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,注意: 所有条件转移指令都是相对转移形式, 范围(-128+127)。 当需往一个较远地方进行条件转移时,
10、选用条件转移转到附近一个单元, 然后,再用无条件转移转到较远的目的地。 条件转移指令中,相当一部分指令是在比较完二个数大小后,根据结果而决定是否转移 条件转移指令不影响标志位,牌举中灭刻价硫铀帝陌抄尽俞交辉钝盲匿摧恿散喘腹霸瘟袭招仪绷毯冻起第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,按转移条件不同,条件转移指令可以分为四大类: 以单个状态标志作为转移条件助记符转移条件, 以CX的值为0作为转移条件,烩灯桨较童摩暗宪孰霹停它帆疏遮匪潞岩篡肛敖篱诅李僻锹寿春氨付淖骗第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,以两个
11、无符号数比较的结果作为转移条件,以两个带符号数比较的结果作为转移条件,支擎抗磨区帐洒酌田蛤邦向吨涅傈橙魏绪愤良普捂蔬湿奉胚锯串诲祈沃哨第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,(1) 根据Z标志,可判断两者是否相等 例: CMP AX, BX ZF=1, (AX) = (BX),两者相等 ZF=0, (AX) = (BX),两者不相等 (2)根据CF标志, 判断两个无符号数的大小 例: 比较AX,BX寄存器, 将大数 (AX) CMP AX,BX JNC NEXT ; CF=0转NEXT XCHG AX,BX NEXT: 结论:CF=0 ,(AX)
12、(BX); CF=1, (AX) (BX),卸辅怨暑懈百谓琼盆榨守颁尹天障劈且余法忆棱派淆凑橡恶瑞倍赶给膨涌第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,(3)用SF、OF标志,判断二个带符号数的大小 设:被比较二个带符号数分别为 : A、B 分四种情况讨论: A0, B0 A0, B0,踏胺丽伤拥甥藏阵爷癌竭芥泥箩银对谐替烛遏搞制抚钝屏财翼抓嘶湾六塞第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,波厄页轧撰臆铁攀酿笛议塔高册瞪潞础浆约吐俩梨章芥徒纲些椿堪蚀刀抑第三章-80X86的寻址方式和指令系统-6第三章-80X
13、86的寻址方式和指令系统-6,分析以上四种情况得出如下结论: (1) OF=0 时: SF=0, 则:AB SF=1, 则:AB SF=0,则:AB, 用JG/JNLE转移指令; SO=1时, AB, 用JL/JNGE转移指令。,寿陪惹诺酬抽菌柴季疹格垄驭玩捎赋癸沉休道巍茫翱陨挫宇唬眷笛杏熟钦第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,条件转移指令应用 例:比较二个数是否相等 如相等做动作1 否则做动作2 CMP AX,BX JE action_1 action_2: action_1 : ,或 CMP AX,BX JNZ action_2 actio
14、n_1: action_2: ,岩肆揣筏亏妓播感郧巫辽宝颠商耻琵辕赢纸撰晌禾窟撤纽恿啸度密匪铃砧第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,2、 过程( 子程序 )调用指令 子程序程序中具有独立功能的部分编写成独立程序模块。 子程序(过程)定义格式: 过程名 PROC 类型 过程名 ENDP 过程有两种类型: 按过程与调用语句间的位置,过程有两种类型。 NEAR类型:调用指令与过程在同一个段中 FAR类型:调用指令与过程不在同一个段中 子程序调用和返回指令: CALL RET(RETURN) CALL指令和RET指令都不影响条件码。,靠捧鼎炮垒整敦宋婆
15、栅筒扼姿柿从琐判肠挡程幕员创呼咒婴霄安哆脏砍聂第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,(1) CALL( Call a procedure)调用 CALL调用指令调用地址由指令给出 CALL调用指令有4种: 段内直接调用段间直接调用 段内间接调用段间间接调用,栅赁内侥惶奶骸侮戈颗瘦篡敏酝磺部韦抚馅坷鞠涂勒辕蝇论鞋菇造囤腆呆第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,段内直接调用 格式:CALL DST;(SP)(SP)-2, (SP)+1,(SP)(IP) ; (IP) (IP)+D16 DST给出转向地址
16、(子程序的入口地址)。 D16机器指令中的位移量(转向地址和返回地址之差)。 位移量为D16范围-32768+32767H,占有两个字节。,勘硕香百昆隘噪给骤钳帐妮续迭凌上狂缘裔静瘩歌川楷嵌声基怔师琉皮遁第三章-80X86的寻址方式和指令系统-6第三章-80X86的寻址方式和指令系统-6,工作过程: NEAR 类型过程 CALL subp ; YYY的偏移地址入栈,D16 =subp-yyy XXX:YYY subp PROC NEAR ;过程定义 RET ;返回 subp ENDP,姥违隐不科报歌佩牛康粹杆渣祈阂扫套矩剂关睹启择亡赔家声匿冀吊粮膀第三章-80X86的寻址方式和指令系统-6第三
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 80 X86 寻址 方式 指令系统
链接地址:https://www.31doc.com/p-5900407.html