- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]6指令系统2
* * 五.控制转移指令 §3.2 指令系统 (二) 条件转移指令 【分类】 1. 以单个状态标志作为转移条件 助记符 转移条件 JS JO JP JC ZF=1 SF=1 OF=1 PF=1 CF=1 JZ /JE 助记符 转移条件 JNS JNO JNP JNC ZF=0 SF=0 OF=0 PF=0 CF=0 JNZ /JNE * * 五.控制转移指令 §3.2 指令系统 (二) 条件转移指令 【分类】 2. 以CX的值为0作为转移条件 * * 五.控制转移指令 §3.2 指令系统 (二) 条件转移指令 【分类】 3.以两个无符号数比较的结果作为转移条件 * * 五.控制转移指令 §3.2 指令系统 (二) 条件转移指令 【分类】 4.以两个带符号数比较的结果作为转移条件 * * 例;某学生的英语成绩在AL中,若低于60分,则打印‘F’;若高于或等于85分,则打印‘G’;否则打印‘P’;试编程实现。 程序段: CMP AL,60 ;与60分比较 JB FAIL ;小于60分,转FAIL CMP AL,85 ;大于60分,与85分比较 JAE GOOD ;大于等于85分,转GOOD MOV AL,‘P’ ;其它,‘P’送 AL JMP PRINT ;转打印程序 FAIL: MOV AL,‘F’ ;‘F’送 AL JMP PRINT ;转打印程序 GOOD: MOV AL,‘G’ ;‘G’送 AL PRINT: ;打印AL中的字符 * * 五.控制转移指令 §3.2 指令系统 (三) 循环控制指令 【格式】 LOOP xx 目标地址 【操作】 ①(CX) ← (CX)- 1 此操作不影响标志 ② 检查转移条件,满足,转向目标地址; 不满足,执行LOOP xx后一条指令 【目标地址的寻址方式】 只允许段内直接短转移! 跳转范围在-128~127 助记符 转移条件 不转移条件 LOOP CX ≠ 0 CX=0 LOOPZ CX ≠ 0 且 ZF =1 CX=0 或 ZF=0 LOOPNZ CX ≠ 0 且 ZF=0 CX=0 或 ZF=1 * * 例:设在BUF1开始的内存中有一个由50个字节组成的数组, 现要对数组中的元素进行测试,直到找到第一个非 0元素或查完了为止。 程序段: LEA SI,BUF1 DEC SI MOV CX,50 AG: INC SI CMP [ SI ],0 LOOPE AG LEA SI,BUF1 MOV CX,50 AG: CMP [ SI ],0 INC SI LOOPE AG ;INC影响ZF,加在两条之间不合适 * * 五.控制转移指令 §3.2 指令系统 (四) 调用和返回指令 1.子程序(过程)调用指令 【格式】 CALL 过程名 【分类】 段内 段间 直接 间接 直接 间接 * * 【操作】 五.控制转移指令 §3.2 指令系统 (四) 调用和返回指令 1.子程序(过程)调用指令 【功能】 转去执行子过程,执行完毕应保证能正确返回执行CALL下面的指令。 段内调用 (SP)←(SP)- 2, (SS:SP) ← (IP)保护断点 (IP) ← 子程序入口的偏移地址 段间调用 (SP)←(SP)- 2, (SS:SP) ← (CS)调用段的CS (IP) ← 子程序入口的偏移地址 (SP)←(SP)- 2, (SS:SP) ← (IP)断点保护包括 (CS)← 子程序所在段的段基址 CS:IP 顺序 * * 段内间接调用指令: 例:设 (BX) = 0200H,执行指令CALL BX后,CPU转向何处执行程序? 例:DS=1000H,BX=200H,SI=300H,(10500H)=321
文档评论(0)