- 1、本文档共55页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章8086指令系统03
微机原理及应用 3.3.4 串操作指令 常见串操作 计算字符串的长度、查找某个特定字符、改换字符、判断字符串是否一致等 串操作类指令 MOVS、CMPS、SCAS、LODS、STOS 注意事项 操作数的源串在当前数据段DS中,若不在,可使用段前缀指令;目的串必须在附加段ES中,且不能使用段前缀指令 字符串指令中的操作数只用于指出指令的操作类型。目的操作数与源操作数的逻辑地址由ES:DI和DS:SI指出 用CX存放要处理的字符串的元素个数。在执行带重复前缀的字符串指令时,每执行一次字符串操作指令,CX的内容自动减1 用DF标志来置规定字符串处理方向。DF=0,由低向高,DF=1,相反 每处理完一个元素,自动修改SI和DI的内容 字符串处理过程可被中断 1 字符串的传送 MOVS 目的串,源串(MOVSB/MOVSW) 把一个字节或一个字从源串传送到目的串,并自动修改SI和DI,指向下一个元素 通常加REP,完成块的传送 MOVSB和MOVSW是MOVS的替代符 2 字符串的存与取 LODS 源串(LODSB/LODSW) 指令是把由SI寻址的源串元素装入到寄存器AL/AX中,并修改SI,指向下一元素 通常不加前缀 地址增减取决于方向标志DF,DF=0增量修改,DF=1减量修改 替代符—LODSB/LODSW 举例:编制一程序段,要求将0700H单元开始的5个字节的内容逐一装入累加器中进行处理,处理完后,再送入0700H为首地址的内存区中 STOS 目的串(STOSB/STOSW) 指令所完成的操作和LODS指令相反。他将累加器AL/AX中的内容存入附加段中由DI寻址的存储单元中,并自动修改地址指针 与REP结合,可使一串内存单元填满相同的数 替代符—STOSB/STOSW 举例:若对某一数据缓冲区清零,并设(ES)=3000H,数据缓冲区首地址DI=0200H,缓冲区长度为100个字节,则可用以下的程序段: 3 字符串的比较与扫描 CMPS 源串,目的串(CMPSB/CMPSW) 用源串减去目的串,根据操作结果影响标志,结果不回送 源串由SI指出,目的串由DI指出 源操作数写在左边,目标操作数写在右边,与其他指令不同 与REPE或REPZ配合使用CX≠0(指定的长度还未比较完)且ZF=1(两串相等),则重复比较;直到CX=0(比完了)或ZF=0(两串不相等)时才停止比较. 与REPNE或REPNZ配合使用,CX ≠ 0且ZF=0(两串不等),则重复比较;直到CX=0(比完了)或ZF=1(两串相等)时才停止比较. CPMS的替代符—CMPSB、CMPSW,使用方法与MOVSB/MOVSW相同 SCAS 目的串(SCASB/SCASW) 功能是在字符串中查找一个与已知数值相同或不同的元素。它以AL或AX的内容与附加段ES中用DI寻址的目的串元素进行比较,利用结果影响标志位,来反映扫描结果 执行结果不改变目的串的数据 与REPE或REPZ配合使用CX ≠ 0且ZF=1,查找不同元素; 与REPNE或REPNZ配合使用,CX ≠ 0且ZF=0,查找相同元素; SCAS替代符—SCASB/SCASW 重复前缀指令 重复前缀指令 REP与MOVS、STOS指令联合使用时,他的意义是“字符串未处理完时重复” REPE(相等时重复)和REPZ(等于0时重复)实际上是相同的。将他们与CMPS、SCAS指令联合使用,可对本条指令操作所设置的ZF进行测试,ZF=1且CX ≠ 0,重复,否则退出 REPNE(不等于时重复)和REPNZ(不等于0时重复)意义相同。与CMPS、SCAS联合使用,ZF=0且CX ≠ 0,则重复,否则退出 3.3.5 控制转移类指令 控制转移类指令用于实现分支、循环、过程等程序结构,是仅次于传送指令的常用指令 重点掌握: JMP/Jcc/LOOP/JCXZ CALL/RET INT n/IRET 常用系统功能调用 1 程序转移的地址 相对寻址方式 指令代码中提供目的地址相对于当前IP的位移量,转移到的目的地址(转移后的IP值)就是当前IP值加上位移量 直接寻址方式 指令代码中提供目的逻辑地址,转移后的CS和IP值直接来自指令操作码后的目的地址操作数 间接寻址方式 指令代码中指示寄存器或存储单元,目的地址从寄存器或存储单元中间接获得 目标地址的寻址范围:段内寻址 段内转移——近转移(near) 在当前代码段64KB范围内转移( ±32KB范围) 不需要更改CS段地址,只要改变IP偏移地址 段内转移——短转移(short) 转移范围可以用一个字节表达,在段内-128~+127范围的转移 目标地址的寻址范围:段间寻址 段间转移——远转移(far) 从当前代码段跳转到另一个代码段,可以在1MB范围 需要更改CS段
文档评论(0)