微机原理第3节4.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3. 3.5 程序控制指令:控制程序的执行顺序 程序是指令的集合 指令在内存中顺序存放 CS和IP两寄存器的内容决定了程序的流程,改变CS和IP寄存器的值,就改变了程序执行的流程。 1.为使程序转移到一个新的地方去执行,可以改变IP的值,称为段内转移(近转移,NEAR);也可以改变CS、IP,称为段间转移(远转移,FAR)。 2.无论是段内还是段间转移,都有间接转移和直接转移之分。 直接转移:指令中直接给出转移地址。 间接转移:转移地址间接存储于寄存器或存储单元中。 计算段内转移地址有两种方法 一种是把当前IP值增加或减少某一个值,也就是以当前指令为中心往前或往后转移,称相对转移。 另一种是以新的值完全代替当前IP值,称绝对转移。 在8086中,所有段内直接转移都是相对转移;所有段内间接转移都是绝对转移。 8086提供了四种程序控制指令 转移指令 循环控制指令 中断指令 过程调用指令 1. 无条件转移指令 JMP(Jump):无条件转移到目标地址target去执行程序。 (1) 段内直接转移 ①JMP SHORT LABEL 段内直接短转移,8位,-128~+127 ②JMP NEAR LABEL 段内直接近转移,16位,-32768 ~+32767 LABEL:标号,称为符号地址,表示转移的目的地。 功能:当前IP的值+地址位移量→(IP) CS保持不变。 举例 JMP 7CH;段内直接短转移 JMP 6700H;段内直接近转移 (2) 段内间接转移 格式:JMP OPRD OPRD是16位的寄存器或者存储器地址 若OPRD是存储器操作数,则要加上类型指示符WORD PTR CS保持不变 举例 ①JMP AX (IP)←(AX),段内间接转移 ②JMP WORD PTR[SI] 设(SI)=2600H,(DS)=7000H, (72600H)=12H,(72601H)=34H 则执行完指令后,(IP)=3412H (3) 段间直接转移 格式:JMP FAR label 指令中直接提供要转移的16位段地址和16位的偏移地址。 例:JMP 8000H:6000H 则(CS)=8000H,(IP)=6000H (4) 段间间接转移 格式:JMP OPRD 操作:OPRD是一个32位的存储器地址,将 指定的连续4个内存单元的内容送入IP和CS,低字的内容送IP,高字的内容送CS。 举例 JMP DWORD PTR [BX] 设(BX)=1000H,(DS)=2000H 21000H 12H 34H 56H 78H 2. 条件转移指令 ① 以单个状态标志位作为转移条件 ② 以CX的值为0作为转移条件 ③ 以两个无符号数比较的结果作为转移条件 ④ 以两个带符号数比较的结果作为转移条件 例题 在以TABEL为首地址的内存数据段中,存放有100个8位带符号数,试统计其中正数、负数和零的个数,并分别将个数存入PLUS、MINUS和ZERO 3个单元中。 (见P136 例3-43) XOR AL,AL MOV PLUS,AL MOV MINUS,AL MOV ZERO,AL LEA SI,TABLE MOV CX,100 CLD AGAIN:LODSB CMP AL,0 JZ X1 JG X2 INC MINUS JMP NEXT X1: INC ZERO JMP NEXT X2: INC PLUS NEXT:DEC CX JNZ AGAIN HLT 3. 循环控制指令 (1)LOOP指令 格式:LOOP LABEL 执行操作:(CX)←(CX)-1, CX?0

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档