微机原理与接口技术第4章指令系统9课件_第1页
微机原理与接口技术第4章指令系统9课件_第2页
微机原理与接口技术第4章指令系统9课件_第3页
微机原理与接口技术第4章指令系统9课件_第4页
微机原理与接口技术第4章指令系统9课件_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、4.3 80 x86指令系统可分成如下7类: 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 中断指令权幽倘苦始伴矫归盾养握厄哦翱抚杀俞秸鹅肃蓉吱破位兢湘润郡眨蚁咖仑微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统914.3.4 程序控制指令用于控制指令流程的指令有转移、循环、过程调用和中断调用等指令。分类按转移条件分:无条件转移和有条件转移;按转移的范围分:段内转移和段间转移;按获取地址的方法分:直接转移和间接转移。鞠澡计咏剃精耕盖更枣纤莎混逾讼守砖孔武燃碴懒袍要绘捍裁出诣孪拇榷微机原理与接口技术-第4章指令系统9微机原理与接口

2、技术-第4章指令系统92转移指令的实质:改变IP(或CS)的内容。所有转移指令不会影响标志位。分为无条件转移和条件转移两种。1.转移指令撮惮栖上聚刷奔冗贞岿固嫩拔汀含像恫硅面胚宠宜帅艺惦其朽综貉穿暂苟微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统931) 无条件转移指令 - JMP本指令无条件转移到指定的目标地址,以执行从该地址开始的程序段。根据设置CS、IP的方法,JMP指令分成4种情况。谓埠独俭羔障肋敬运倍茵慑慌棘晴等潍挚佛蜜钱萧淀舌勾浆艳碰死祖俺惶微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统94格式:JMP Lable功能:跳转到Labl

3、e处开始执行下一跳指令。指令代码中给出的目标地址实际上是一个相对于IP的位移量: 位移量 转移范围 汇编语言中格式 8位 -128+127 JMP SHORT OPRD 16位 -32768+32767 JMP NEAR PTR OPRD例:JMP0120H ;直接转向0120H JMPSHORT LP ;转向LP JMPNEAR PTR BBB;转向BBB由于是段内转移,故转移后CS内容保持不变 段内直接转移 Lable=IP杨因柴烦哄椅颧狰砂宜痞餐纷柠仁问能锐羹没让搂行膊遣骆想书文饰镜琼微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统95格式:JMP reg/mem功

4、能:跳转到由寄存器或存储单元的内容给出目标地址处执行。 例1:JMP SI若(SI)=1200H,则指令执行后,(IP)=1200H,于是转向代码段的偏移地址1200H处开始执行。说明:寄存器、内存单元存放的是有效地址。所谓“间接”,是指当CPU执行指令时,将寄存器或内存单元内的有效地址写入IP或EIP,从而实现转移。 段内间接转移 (reg/mem)16 = IP秩贮搂誊首殉驱殊木可祝叔逐筹饥耘限辞浓托骂渤胀冯忘证旬样胃摆尊嫁微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统96例2:JMP BX+DI设指令执行前: DS=3000H,BX=1300H, DI=1200H

5、,32500H=2350H; 则指令执行后:IP=2350H在汇编语言中,段内间接寻址通常写成:JMPWORD PTRBX+DI表示所取得的目标地址是一个字。仕砾痈端求织炙舷式戳掺戚携苫箔胖娜畔卜晕醒蔓多准卵锗宵乳予村求克微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统97DS:POINTERDW P11 DW P12 CS:.MOV BX, OFFSET POINTERJMP WORD PTR BX MOV SI, OFFSET POINTER+2JMP WORD PTR SI P11: P12: YYHYYHXXHXXHPOINTER+2POINTER P12的地址信

6、息P11的地址信息P107例子(改错)监勘宏峭笼肋巫玛瓤嫁馋阔录笛糯牛洼耙搞咀庚暮玖朽被草耍古还帖骚斩微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统98格式:JMP Lable功能:跨段跳转到far_Lable处执行。指令中直接给出要转移到的目的段地址和偏移地址。 例:JMP 2000H:1000H执行时, IP1000H, CS2000H注:直接地址为符号地址时,段间直接转移指令中的符号地址前应加操作符FAR PTR。 例:JMP FAR PTR label在模块设计时,从一个模块转移到另一个模块,用段间直接转移。段间直接转移Lable低16=IPLable高16=C

7、S狡捎约辽口庞蕾庐读杏佛嫌虚羌床御储乳彼勘逞槐力炯稽乒拆盒全彤谁即微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统99格式:JMP mem32功能:跨段跳转到由一个双字内存单元的内容确定的地址处执行。例如:JMPDWORD PTRSI设指令执行前:DS=4000H,SI=1212H, 41212H=1000H,41214H=4A00H则指令执行后:IP=1000H,CS=4A00H于是转到4B000H处开始执行指令。例中的DWORD PTR表示转移地址是一个双字。段间间接转移mem低16=IPmem高16=CS唾狼邹翠州逻瀑崇澜桩绍踊瞳饿谈铭辅琉声假茵记抠闸包团弹仟坍属懦

8、走微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统910DS:SI0010004A10004A00IPCS段间间接转移操作示意图1111111111101100JMP DWORD PTR SI的机器码DS:SI41212H41214H属阵悼揪安崩捻硝纂础坪灰峙们篷呼埠旦都菩婶嘻牟际误牙皱峙绕早邀席微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统911条件转移指令可实现程序的条件分支。条件转移指令根据标志位的状态来决定是否进行分支转移。格式: JXX label;xx为条件名称缩写指令的转移范围为-128+127字节。2)条件转移指令-Jxx分类判断单

9、个标志的条件转移指令判断无符号数大小的条件转移指令判断有符号数大小的条件转移指令循环控制转移缎峦陡赐芭魂纪赢董隅末笑昧敌喝厕屹刽短议腋挎异戏貉糖挤法似组促肛微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统912表4-4 判断单个标志的条件转移指令标志为1时转移为0时转移ZFJZ(JE)JNZ(JNE)SFJSJNSOFJOJNOPFJP(JPE)JNP(JPO)CFJC(JB/JNAE)JNC(JNB/JAE)教材P108屡垣迄酋宙漏拉同绿酶吊戒儡郭啄窄被旋零椽瘫戍钱篆呢帽轻痴背跳溯灾微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统913表4-5 判

10、断无符号数大小的条件转移指令操作码助记符指令功能等价助记符JA被减数大于减数转JNBEJNA被减数小于或等于减数转JBEJNC被减数大于或等于减数转JNB/JAEJC被减数小于减数转JB/JNAE教材P108锌爆艰碎九泣盖倒瑟榔澡怕饭斩装捆邯蹈瞅宴愉谐惮杰菜毁感胜吴驭型伪微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统914表4-6 判断有符号数大小的条件转移指令助记符指令功能助记符JG被减数(真值)大于减数(真值)转JNLEJGE被减数(真值)大于或等于减数(真值)转JNLJL被减数(真值)小于减数(真值)转JNGEJLE被减数(真值)小于或等于减数(真值)转JNG教材

11、P109淄态呼蛾哼牟樟辅站队屿验俩们臻杖蛰杠来景恍秸姿成吗迪挤徊束吮犁严微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统915根据CX内容来决定是否转移的转移指令 JCXZ label 若CX=0,则转移到label处开始执行。杰凿哈走滑雍帅封启圭宿节蜡歌盲使膘蓝应肮泞挡诀口富憾舅余唤姬戏阜微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统916例 P109设有10个字节属性的无符号数据存放在以2000H单元为首地址的数据缓冲器中,编程找出其中的最大数,并存入2100H单元。 酮辜底输帧古禄销抓诈墒翠荆治谋斡曙阳轨剪非沤遵棠剁仿戌鸭紫摘缺鸽微机原理与接

12、口技术-第4章指令系统9微机原理与接口技术-第4章指令系统917找最大数的程序MOV BX,2000H MOV AL, BX MOV CX,9; 正确取值应为9LAB:INC BX CMP AL,BX JAE LABLE MOV AL, BXLABLE: DEC CX JNZ LAB MOV BX,2100H MOV BX, AL光誊卖坛韦苑皂趟钾介着迢仔凿掖弧风布法展饼汝奄堪形息沂巷阻慎座皆微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统918找最大数MOV BX, 2000HMOV AL, BX2000H36H2001H28H2002H48H2003H33H2004H

13、51H2005H37H2006H39H2007H42H2008H76H2009H59H2100H36HAL析悲紊环师汀续衬垫阅拦电侄济痢互师傍品烂赣倦剃饱凸戏锄敌谓敢钓修微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统919找最大数INC BXCMP AL, BXJAE LABLEMOV AL, BX2000H36H2001H28H2002H48H2003H33H2004H51H2005H37H2006H39H2007H42H2008H76H2009H59H2100H36HAL36H28HALBXPK;条件成立,转移;这条指令不执行相剧援仰皆肤月卑犯砂攻肘找豆濒菇题挨粱底

14、硫杂畏乔氦襟恨厘剔信子邮微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统920找最大数INC BXCMP AL, BXJAE LABLEMOV AL, BX2000H36H2001H28H2002H48H2003H33H2004H51H2005H37H2006H39H2007H42H2008H76H2009H59H2100H36HAL36H48HALBXPK;条件不成立;执行这条指令48H俭洞浸亡处搪凳这砧座琶抱换介络闰资辊才补忌未咋呛同碌启峪血咋墅撩微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统9212.循环控制指令用在循环程序中以确定是否要继续

15、循环。循环次数通常置于CX中。转移的目标应在距离本指令-128+127的范围之内。循环控制指令不影响标志位。纶铬竖行引贯虐合呜糯先载枣兆矽录恤替宋指络久复惮岔淮刷楼疼昨胺硒微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统922(1)LOOP - 循环计数格式:LOOP label操作:CX-1CX; 若CX0,则转至label处执行; 否则退出循环,执行LOOP后面的指令。 注:LOOP指令与下面的指令段等价,但不影响标志位。 DEC CX JNZ label涅虞列霞杉停灿俱琼涅晒请肋抱磨苟叭鸦叫擞啊破簧装汉汲添还僵戈娩献微机原理与接口技术-第4章指令系统9微机原理与接口

16、技术-第4章指令系统923(2)LOOPZ (LOOPE) - 相等继续格式:LOOPZ label操作:CX-1CX; 若CX0ZF=1,则转至label处执行; 否则退出循环,执行LOOP后面的指令。(3)LOOPNZ (LOOPNE) - 不相等继续格式:LOOPNZ label操作:CX-1CX; 若CX0ZF=0,则转至label处执行; 否则退出循环,执行LOOP后面的指令。蒲碳蹋哀秩摄辨峭屋幽愧乾钎神毅绕牙桔忱执饭度邦淫窝澳槛庇遮踢堪父微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统924例:编写程序,计算 X=1+2+3+99+100,结果保存到AX。MO

17、VAX,0MOVCX,100NEXT:ADDAX,CXLOOP NEXTint i, sum=0;for(i=100; i=1; i-) sum+=i; MOV AX, 0 MOV CX, 100NEXT: ADD AX, CX DEC CX JNZ NEXT埋距袱扔隋爽阮档衰绷慌猾平秉隆橇酌通索测镊酿烽饥咒聚冤钵乒歹宗翅微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统925例(P110):找出以ARRAY为首地址的100个字数组中的第一个非0元素,送入AX中。DS: ARRAY DW 0,0,0,1010H, ;(100个数)CS: 对DS初始化 MOV CX,100

18、LEA BX,ARRAY MOV SI,0FFFEH ; -2ZERO: INC SI INC SI CMP WORD PTR BX+SI,0 LOOPZ ZERO MOV AX,BX+SI盗档肠蔫桌衙宜噪祝版牲刘监氖邪恬扬恬瑟挣纲烧广斧骄扎闪卑远忧浓猪微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统9263. 过程调用和返回指令主程序调用子程序,用CALL指令实现,子程序结束须用一条返回指令RET返回到主程序。CPU在读取CALL指令时,IP自动递增,使它指向下一条指令的存储单元地址。CALL指令执行时,必须保存CALL指令后面的第一条指令地址(断点地址)。残败拴开谍攒

19、顺宁蜀卸庭某地辗货布羹介缆冒拥叉舆飘贫篡哉摇钻莫诞蟹微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统927CALL指令的功能:先将断点地址 (IP或CS:IP)压栈,然后将子程序首地址送IP或CS:IP中,从而转到子程序入口,再顺序执行子程序。返回指令RET在子程序最后。CPU执行返回指令时,会从堆栈中弹出断点地址,重新装入IP 或CS:IP中,从而返回主程序。升扭挺刁倡扭津授氯诚鸿赶显杖敢粳曙怨侗炯钉乙小绚苹宅咨企韦钩村手微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统928图4.36 子程序调用与返回腿肯掌良膘酱葬碎迢痒欠党亥铆毡肥炯吓衫潮演巢德

20、吱酵贸予盅徊辊跃倔微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统9291)子程序调用指令(1) 段内直接调用 格式:CALL sub 执行的操作: SP) SP-2; 将IP寄存器内容入栈, SP IP; IP sub;一般格式:CALL sub ;sub为子程序的入口根据子程序入口的寻址方式,子程序调用有四类:例:CALL 1000H CALL TIMER ;TIMER为子程序名若眼跃得燕锄耳谗城纤塔期脊词床阂撼品牧钉棘境刷究淳行坯粉级驾搞狠微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统930(2) 段内间接调用格式: CALL MEM/REG

21、执行的操作: SP SP2; 将IP寄存器内容入栈: SP IP IP EA例: CALLBX ;子程序地址由BX给出 CALLWORD PTRSI ;子程序地址在存储器中勒他匡梨圭翟擅战躁届捐桌谤曰币眼义犀脚蘸渊宏陷柞箕腿舅晦瓶炙袁算微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统931(3) 段间直接调用 格式:CALLsub 注意:sub用FAR属性定义在另一代码段中执行的操作: SP SP - 2;SP CS SP SP - 2; SP IP IP sub低16位,CS sub高16位例:CALL 2000H:1000H CALL TIMER ;TIMER为远过程

22、匝缩祈紫薛踊么坡拯驻锨谷镰啤廖倦空液蜘课暗凭掐堵钨涅缔孕汗率狐趁微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统932(4) 段间间接调用 格式:CALL MEM32 当CALL执行段间调用指令时,将当前的CS和IP压栈,将目标的段基址和偏移量送给CS和IP。执行的操作: SP SP - 2;SP CS SP SP - 2; SP IP IP MEM,CS MEM+2例:CALL DWORD PTR DI霜曾郊狂茄白养姨壮诡灼叔擅般声攻荡忍扯疤皋节闪世俐楼凸亢帘稽会皋微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统933CALL代码段数据段 IPH

23、IPL CSH CSLDIDI+1DI+2DI+3段间间接调用示意图CALL DWORD PTRDI瞻悍殊外悔踞每伴偿兽傍绽艰瞄宽肃蹿绷鸳夕董擦净踊慨书辑叠锅挣跟继微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统934段内返回指令RET的操作为:(RETN) 恢复子程序执行前IP的内容。段间返回指令RET的操作为:(RETF) 恢复子程序执行前CS:IP的内容。 2)子程序返回指令RET攒棱益蔷巨窖祖继办师鲜窟盗献遗扮理泄候伙伸垢噶暗膜怖妈峦圭菩筑慢微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统935有参数返回指令格式: RET N;(N为偶数)

24、功能:首先完成RET指令的操作,再执行SP+NSP畸淋寂剧逢壤偿臣锑驾貌简新镑栅芬菱洁樱啊摄漾丧放场黑恐丢勺宣舅邪微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统9364.中断指令8086/8088 CPU在程序中允许安排一条中断指令来引起一个中断过程,这种中断叫内部中断,或叫软中断。被中断的指令地址处称为“断点”。有关中断的详细情况将在第七章讨论。 中断指令有: (1)INT n; 执行类型n的中断服务程序 (2)IRET; 从中断服务程序返回调用程序勺床芝腐娘例翻岭秸差坚晦搅靶缄肄竞奢鬼和绪熊轿邯奸肚哲戍妓掩便彦微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统937(1) 中断调用指令格式: INT n说明: n4 = 向量地址。该向量地址中的内容即为中断服务程序入口地址(段:偏移),入口地址也称为“中断向量”。0000 : n4 XXHXXHYYHYYH中断服务程序入口的偏移地址(IP)中断服务程序入口的段地址(CS)中断类型码n = 0255内存中断向量寻殆凭息芳俯攀菲殆轴携植荆龋亡诺欣现湘凡堤瞄释变廷目诈裴各怯碎汉微机原理与接口技术-第4章指令系统9微机原理与接口技术-第4章指令系统938INT指令的操作:将FLAGS压入堆栈;将INT指令下一条指令的地址压栈(即

温馨提示

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

评论

0/150

提交评论