- 1、本文档共224页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[互联网]3-8086指令系统及编程应用-1
例:在附加段STORE开始存5个空格 程序: MOV AL,20H ;‘_’ ? (AL) MOV CX,5 MOV DI,offset STORE CLD REP STOSB ;((ES):(DI)) ? (AL) (DI) ? (DI)+1 (二) 与REPE/REPZ和REPNE/REPNZ联合工作的 CMPS和SCAS指令 REPE/REPZ 当相等/为零时重复串操作 格式:REPE(或REPZ)string primitive 当相等重复前缀REPZ String primitive可为 : CMPS , SCAS 1、CMPS (Compare string ) 串比较指令 2、SCAS (Scan string ) 串扫描指令,搜索指令 执行过程: 当(CX)= 0 , 结束REPZ, 执行REPZ下一条指令; (2) 当(CX)≠0,将CX 的内容减1, 执行REPZ后的串指令; (3) 当ZF = 1, 返回 (1) ; (4) 当ZF≠1, 则结束REPZ 执行REPZ下一条指令。 注意: ◆ (CX)减1操作不影响标志 ◆ ZF标志由串操作决定 ◆ 当 (CX) = 0或ZF=0时退出循环 REPZ执行流程 REPNE/REPNZ 当不相等/不为零时重复串操作 格式:REPNE(或REPNZ)string primitive 当不相等重复前缀REPNZ string primitiveString primitive可为 : CM PS , SCAS 1、CM PS(Compare string ) 串比较指令 2、SCAS (Scan string ) 串扫描指令,搜索指令 逻辑指令应用小结: (1)AND指令用来对指令的指定位清“0”。 (2)OR指令常用来对某些位置1。 (3)XOR指令用在程序开头,使某个寄存器清“0”。 (4)NOT指令对某个数据取反,+1成补码。 (5)TEST指令用来检测指定位为1,还是0。 (二)移位指令 1、 算逻移位指令( 4条 ): SHL , SHR, SAL , SAR 。 (1)、 SHL/SAL(Shift logical left/shift arithmetic left) 逻辑左移/算术左移指令 (2)、SHR (Shift logical right ) 逻辑右移指令 (3)、SAR (Shift arithmetic right )算术右移指令 2、循环移位( 4条): ROL, ROR , RCL, RCR。 (1)、ROL (Rotate left ) 不含CF循环左移指令 (2)、ROR (Rotate right ) 不含CF循环右移指令 (3)、RCL (Rotate left through carry )含CF循环左移指令 (4)、RCR (Rotate right through carry )含CF循环右移指令 共同点: 所有移位指令都可以作B/W操作。 指令中的 dest : 寄存器、存储器寻址方式。 cnt : 表示移位次数 cnt=1,1可写在指令中,不能是1以外的常数。 cnt1,用CL存放移位次数 ,不能是其他寄存器。 如: SAL AX,1 MOV CL,4 SAL AX,CL 利用移位指令编制 *, / 程序, 执行时间比直接用 * ,/ 指令快, 速度可提高5-6倍。 条件码设置: 算逻移位移位指令: 执行多次移位指令后对CF、OF的影响: CF=从目标操作数移出的最后一位;OF不定。 执行一次移位指令指令后对CF、OF的影响: OF用于判断移位后最高有效位是否发生变化. 最高位与CF不等, 则: OF = 1,
文档评论(0)