- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理第三章4
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * REPNE/REPNZ 当不相等/不为零时重复串操作 格式:REPNE(或REPNZ)string primitive 当不相等重复前缀REPNZ 可为 CM PS , SCAS 匹配使用。 1、CM PS(Compare string ) 串比较指令 2、SCAS (Scan string ) 串扫描指令,搜索指令 * 执行过程: 当(CX )= 0 , 结束REPNZ, 执行REPNZ下一条指令。 当(CX)≠0,将CX 的内容减1, 继续执行REPNZ后的串指令,且 当ZF = 0, 返回 (1) ; 当ZF≠0, 则结束REPNZ, (4) 执行REPNZ下一条指令。 注意: (CX)减1操作不影响标志 ZF标志由串操作决定 当 (CX) = 0或ZF=1时退出循环 REPNZ执行流程 * 1、CM PS(Compare string ) 串比较指令 (SI)—作为源串地址,(DI)—目的串地址 串比较指令有3种格式: (1) CMPS dest,src;((ES) :(DI) -(DS):(SI)),结果不存,置标志 CMPS B (字节);(SI) ?(SI)±1,(DI)←(DI) ±1 CMPS W (字);(SI) ?(SI)±2,(DI) ?(DI)±2 执行操作: ((ES) :(DI) -(DS):(SI),结果不存,仅置标志。 字节操作:(SI) ?(SI)±1,(DI)←(DI) ±1 字操作:(SI) ?(SI)±2,(DI) ?(DI)±2 注意: 两数相减,只影响标志,不影响操作数。 其它操作规定与MOVS同。 * REPZ CMPSB指令应用 例:利用CMPS指令对STRING1和STRING2二个字符串进行 比较,相同在RESULT 单元送00H,不同送0FFH。 MOV SI,OFFSET STRING1 MOV DI,OFFSET STRING2 MOV CX,COUNT CLD REPZ CMPSB JNZ UNMAT ;若串不同,在RESUL单元中置0FFH MOV AL,0 ;若串相等,在RESULT单元中置00H JMP OULPT UNMAT:MOV AL,0FFH OUTPT: MOV RESULT,AL HLT * 2、SCAS (Scan string ) 串扫描指令,搜索指令 (DI)-字符串起始地址,(AL)或(AX) -关键字 串扫描指令有3种格式: SCAS dest SCASB(字节);(AL)-((ES):(DI)),(DI)?(DI)±1 SCASW(字);(AX)-((ES):(DI)),(DI) ? (DI)±2 注意: 执行{(AL)或(AX)- 目的串 }的操作; 两数相减,只影响标志,不影响操作数。 其它特性与MOVS同。 * REPNE SCASB 指令应用 例:要搜索的关键字放在(AL)或(AX)中,搜索某一数据块或字符串中有无 关键字,若有,把搜索次数记下来,且记录关键字地址;若次数为0, 表示没有要搜索的关键字。 MOV DI, 0FFSET BLOCK ; 设置数据块地址指针 MOV CX,COUNT ; 设置数据块长度 MOV AL,CHAR ; 关键字送入AL或AX REP NE SCASB ;(CX)≠0,Z=0 继续SCASB JZ FOUND MOV DI,0 JMP DONE FOUND:DE
文档评论(0)