pentiun之控制转移课件.pptVIP

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
五 控制控制转移指令 控制转移指令分为: 转移指令 子程序调用和返回指令 循环控制指令 中断指令 处理器控制指令 1.转移指令 ① 段内直接转移 ②段内间接转移 转移的目标地址由寄存器或存储单元的内容给出。 例1:JMP SI 若指令执行前(SI)=1200H,则指令执行后,(IP)=1200H,于是转向代码段的偏移地址1200H处执行。 例2:JMP [BX+DI] 设指令执行前: (DS)=3000H,(BX)=1300H, (DI)=1200H,(32500H)=2350H; 则指令执行后:(IP)=2350H 在汇编语言中,段内间接寻址通常写成: JMP WORD PTR[BX+DI] 表示所取得的目标地址是一个字。(只改变IP) ③段间直接转移 在指令中直接给出要转移到的目的段地址和偏移地址。 例:JMP 2000:1000H 执行时,(IP)←1000H,(CS)←2000H 注:直接地址为符号地址时,段间直接转移指令中的符号地址前应加操作符FAR PTR。 例:JMP FAR PTR far_label 其中的far_label为远类型的标号。 ④段间间接转移 (2)条件转移指令 - JXX 条件转移指令应用举例: 例1:以十六进制数形式显示BX中的内容。 MOV BX, 1234H MOV CH, 4 ; CH做循环计数器 ROT: MOV CL, 4 ; CL做移位计数器 ROL BX, CL ; 将最高4位移到低4位 MOV AL, BL AND AL, 0FH ; 取出低4位 ADD AL, 30H ; 转换为ASCII码 CMP AL, 39H ; 与 ’9’ 比较 JBE DISP ; 若(AL)≤‘9’, 则转显示 ADD AL, 7 ; 若(AL)>’9’, 再加7转为‘A’-‘F’ DISP: MOV DL, AL ; (DL)←字符 MOV AH, 2 INT 21H ; 显示输出 DEC CH ; 4个十六进制数显示完否? JNZ ROT ; 没有, 循环 MOV DL, 48H ; ‘H’ MOV AH, 2 INT 21H ; 最后显示’H’ 例2:在8000H开始的长度为1000字节的字符串中查找’S’,若找到,把其偏移地址记录在ADDR中,否则ADDR单元置为0FFFFH。 MOV DI,8000H MOV CX,1000 MOV AL, ’S’ MOV ADDR,0FFFFH GOON: SCASB LOOPNZ GOON JNZ DONE DEC DI MOV ADDR,DI DONE: HLT 2.子程序调用和返回指令 特点 调用子程序时,IP(CS)的内容被压入堆栈栈顶。从子程序返回时,栈顶的内容又被弹出到IP(CS)。 子程序执行结束后一般均要返回调用程序。 一次定义,多次调用; 可带参数调用,以完成不同的功能。 (1)调用指令CALL ②段内间接调用 ③段间直接调用 ④段间间接调用 (2)返回指令RET(子程序中的最后一条指令) 3.循环控制指令 用在循环程序中以确定是否要继续循环。 循环次数通常置于CX中。 转移的目标应在距离本指令-128~+127或-32768~+32767的范围之内。 循环控制指令不影响标志位。 (2)LOOPZ (LOOPE) 格式:LOOPZ label 操作:(CX)-1→CX; 若(CX)≠0∧ZF=1,则转至label处执行; 否则退出循环,执行LOOP后面的指令。 (3)LOOPNZ (LOOPNE) 格式:LOOPNZ label 操作:(CX)-1→CX; 若(CX)≠0∧ZF=0,则转至label处执行; 否则退出循环,执行LOOP后面的指令。 循环指令的例子见下页。 例1:给1A000H开始的256个内存单元均减去1,若 发现某个单元减为0则立即退出循环,其后的单元不再减1。 MOV A

文档评论(0)

mwk365 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档