- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
有重复前缀的格式: REP MOVSB REP MOVSW REP MOVSD 功能:除完成基本传送指令的操作外,需要将传送元素个数先送CX,每传送一个元素都要自动完成CX-1→CX操作, 如果CX ≠0, 传送后续元素,直到CX-1→ 0为止。 补充: 重复前缀指令REP REPE/REPZ REPNZ/REPNE 注意:重复前缀指令不能单独使用, 它用来控制紧跟其后的字符串指令是否重复。 REP 当某一条串指令需要多次重复时,就可以加上该前缀。 重复次数由CX决定,每重复执行一次,CX-1→CX,直到 CX=0为止。 REP与MOVS及STOE(字符串存储)指令联合使用时,它的意义是“字符串未处理完时重复”。 ?相等重复指令REPE/REPZ(等于0/相等时重复) 当ZF=1且(CX≠0)时,串指令重复执行,一旦条件不满足,重复就停止。 REPE/REPZ与CMPS及SCAS指令联合使用。 REPNE/REPNZ (不相等/不等于0时重复) 当ZF=0且(CX≠0) ,串指令重复执行。 ? 重复前缀 汇编格式 执行过程 影响指令 REP 1)若(CX)=0,则退出,否则顺序执行; 2)CX=CX-1; 3)执行后续指令; 4)重复(1)-(3) MOVS,STOS,LODS REPE/ REPZ 1)若(CX)=0或ZF=0,则退出,否则顺序执行; 2)CX=CX-1; 3)执行后续指令; 4)重复(1)-(3) CMPS,SCAS REPNE/ REPNZ 1)若(CX)=0或ZF=1,则退出,否则顺序执行; 2)CX=CX-1; 3)执行后续指令; 4)重复(1)-(3) CMPS,SCAS 2、串装入指令(Load from string) 格式:LODSB ;DS:[SI]中的一个字节送AL LODSW ;DS:[SI]中的一个字送AX LODSD ;DS:[SI]中的一个双字送EAX 功能:从源串取一个字符串元素送累加器; 注意:根据D标志自动修改SI。 3、串存储指令(Store Into String) 格式1:STOSB ;把 AL→ ES:[ DI]的1个单元 STOSW ;把 AX → ES:[ DI]的2个单元 STOSD ;把 EAX → ES:[ DI]的4个单元 注意:根据D标志自动修改DI。 格式2: 有重复前缀的格式: REP STOSB REP STOSW REP STOSD 说明:①指令执行前, 应把欲存储元素个数送CX; ②CPU执行指令时, 除完成基本存储指令的操作外, 每存储一个元素,自动完成CX-1→CX, 若CX-1≠0,存储下一个元素,直到(CX -1=0)为止。 【例3-72】在数据段中有一字符串,其长度为17,要求把它们传送到附加段中的一个缓冲区中,其中源串存放在数据段中从符号地址MESS1开始的存储区域内,每个字符占一个字节;MESS2为附加段中用以存放字符串区域的首地址。 实现上述功能的程序段如下: … LEA SI,MESS1 ;置源串偏移地址 LEA DI,MESS2 ;置目的串偏移地址 MOV CX,17 ;置串长度 CLD ;DF←0 REP MOVSB ;字符串传送 其中,最后一条指令也可写成 REP MOVS BYTE PTR ES:[DI],DS:[SI] 或 REP MOVS MESS2,MESS1 ; CX, SI和 DI在自动修改 子程序调用与返回指令 子程序调用指令 子程序返回指令 3.子程序调用与返回 子程序是一个完整的、独立的有一定名称(标号)的程序段, 它可以多次被其它程序调用, 并在这个程序段执行完后返回到原先调用的程序处。 主程序调用子程序用子程序调用指令CALL实现;子程序结束须用一条返回指令(eg. RET指令),返回到主程序。 CPU在读取CALL指令时, IP自动递增,使它指向下一条指令的存储单元地址。 CALL指令执行时,必须保存CALL指令后面的第一条指令地址(断点地址)。 3.子程序调用与返回 CALL指令的功能 须先将断点地址 IP或 CS与IP压栈,然后将子程序首地址送IP或CS与IP中, 从而将程序转到子程序入口, 再顺序执行子程序。 返回指令RET的功能 返回指令RET在子程序最后, CPU执行返回指令时, 会从堆栈中弹出断点地址, 重新装入IP 或IP 与 CS中, 从而返回主程序。 主程序
文档评论(0)