网站大量收购独家精品文档,联系QQ:2885784924

计算机体系结构chapter2-指令系统4.ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机体系结构chapter2-指令系统4.ppt

五 程序控制指令 控制转移指令分为: 转移指令 循环控制指令 调用和返回指令 中断指令 1.转移指令 ① 段内直接转移 ②段内间接转移 转移的目标地址由寄存器或存储单元的内容给出。 例1:JMP SI 若(SI)=1200H,则指令执行后,(IP)=1200H,于是转向代码段的偏移地址1200H处开始执行。 注意:目标地址以段内偏移的形式给出,而不是相对于IP的位移量,所以它是一个16位的操作数。 例2:JMP [BX+DI] 设指令执行前: (DS)=3000H,(BX)=1300H, (DI)=1200H,(32500H)=2350H; 则指令执行后:(IP)=2350H 在汇编语言中,段内间接寻址通常写成: JMP WORD PTR[BX+DI] 表示所取得的目标地址是一个字。 ③段间直接转移 在指令中直接给出要转移到的目的段地址和偏移地址。 例:JMP 2000H:1000H 执行时,(IP)←1000H,(CS)←2000H 注:直接地址为符号地址时,段间直接转移指令中的符号地址前应加操作符FAR PTR。 例:JMP FAR PTR far_label 其中的far_label为远类型的标号。 ④段间间接转移 (2)条件转移指令 - JXX ① 根据单个标志位设置的条件转移指令 JB/JC ;低于,或CF=1,则转移 JNB/JNC/JAE ;高于或等于,或CF=0,则转移 JP/JPE ;奇偶标志PF=1(偶),则转移 JNP/JPO ;奇偶标志PF=0(奇),则转移 JZ/JE ;结果为零(ZF=1),则转移 JNZ/JNE ;结果不为零(ZF=0),则转移 JS ;SF=1,则转移 JNS ;SF=0,则转移 JO ;OF=1,则转移 JNO ;OF=0,则转移 ② 根据组合条件设置的条件转移指令 判断有符号数的大小 ③根据CX内容来决定是否转移的转移指令 JCXZ label 若(CX)=0,则转移到label处开始执行。 条件转移指令举例:以十六进制数形式显示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.循环控制指令 用在循环程序中以确定是否要继续循环。 循环次数通常置于CX中。 转移的目标应在距离本指令-128~+127的范围之内。 循环控制指令不影响标志位。 (1)LOOP 格式:LOOP label 操作:(CX)-1→CX; 若(CX)≠0,则转至label处执行; 否则退出循环,执行LOOP后面的指令。 注:LOOP指令与下面的指令段等价: DEC CX JNZ label (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。程序段如下:(逻辑地址为1A00:0H) MOV AX, 1A00H MOV DS,

文档评论(0)

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

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

1亿VIP精品文档

相关文档