- 1、本文档共205页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 条件转移指令的应用 几种条件转移指令的应用 JC/JNC 判断CF的状态。常用于比大小 JZ/JNZ 判断ZF的状态。常用于循环体的结束判断 JO/JNO 判断OF的状态。常用于有符号数溢出的判断 JP/JPE 判断PF的状态。用于判断运算结果低8位中1的个数是否为偶数 JA/JAE/JB/JBE 判断CF或CF+ZF的状态。常用于无符号数的大小比较 * 转移指令例 统计内存数据段中以TABLE为首地址的100个8位符号数中正数、负数和零元数的个数。 * 转移指令例(流程图) 将存放各元素个数的单元清零 取首地址 设串长度 取一个字节数 正数个数加1 零元素加1 为负? 为零? 负数个数加1 N Y N Y * 二、循环控制指令 循环范围: 以当前IP为中心的-128~+127范围内循环。 循环次数由CX寄存器指定。 循环指令: LOOP *LOOPZ *LOOPNZ 无条件循环指令 条件循环指令 * 无条件循环指令 格式: LOOP LABEL 循环条件: CX ≠ 0 操作: DEC CX JNZ 符号地址 * 三、过程调用和返回 用于调用一个子过程; 子过程由程序员预先设计并装入内存 子过程执行结束后要回 原调用处 调用程序 断点 入口地址 子程序 * 调用指令的执行过程 保护断点; 将调用指令的下一条指令的地址(断点)压入堆栈 获取子过程的入口地址; 子过程第1条指令的偏移地址 执行子过程,含相应参数的保存及恢复; 恢复断点,返回原程序。 将断点偏移地址由堆栈弹出 * 过程调用 段内调用 段间调用 段内直接调用 段内间接调用 段间直接调用 段间间接调用 * 1. 段内调用 被调用程序与调用程序在同一代码段 调用前只需保护断点的偏移地址 格式: CALL NEAR PROC 执行过程: 代码段1 调用程序 被调用程序 代码段1 将断点的偏移地址压入堆栈 根据过程名找子程序入口 * 段内调用例 (1)CALL NEAR PROC (2)CALL OPRD 直接调用 间接调用 44H 33H CALL 代码段 数据段 ┇ 设:SI=1200H CS=6000H 1200H 执行CALL SI 指令后: 6000H CS = 3344H IP = * 2. 段间调用 子过程与原调用程序不在同一代码段 先将断点的CS压栈,再压入IP。 调用前需保护断点的段基地址和偏移地址 * 段间调用例 格式: CALL FAR PROC 格式例: CALL FAR TIMRE CALL DWORD PTR[SI] XXH XXH CALL 代码段 数据段 ┇ SI XXH XXH CS IP * 3. 返回指令 功能: 从堆栈中弹出断点地址,返回原程序 格式: RET RET指令一般位于子程序的最后。 * 四、中断指令 中断 中断源 中断的类型 中断指令 引起CPU产生一次中断的指令 * 中断与过程调用: 中断是随机事件或异常事件引起,调用则是事 先已在程序中安排好 ; 响应中断请求不仅要保护断点地址,还要保护 FLAGS内容; 调用指令在指令中直接给出子程序入口地址, 中断指令只给出中断向量码,入口地址则在向 量码指向的内存单元中。 * 1. 中断指令 格式: INT n 说明: nх4 中断类型码 n=0 ? 255 n х4 XXH XXH XXH XXH 入口的段地址 入口的偏
文档评论(0)