第03章80X86指令系统.ppt

  1. 1、本文档共140页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第03章80X86指令系统

隐含约定: ①源串: 起始地址(或末地址)为DS:SI。源串允许使用段超越前缀来修改段地址。 ②目的串: 起始地址(或末地址)为ES:DI。目的串不允许使用段超越前缀修改ES。如果要在同一段内进行串运算,必须使DS和ES指向同一段。 ③指针: 每执行一次字符串指令,指针SI和DI会自动修改,以指向下一个待操作单元。 ④DF标志: 控制字符串处理的方向。 DF=0为递增方向。DS:SI指向源串首地址,每执行一次串操作:字节串操作时,SI、DI分别增1;字串操作时,SI和DI分别增2; DF=1为递减方向。DS:SI指向源串末地址,每执行一次串操作:字节串操作时减l;字串操作时减2。 STD使DF置1,CLD将DF清0。 ⑤串长度: 要处理的字符串长度(字节或字数)放在CX寄存器中。 重复前缀: ①功能: 在基本指令前加重复前缀,可加快串运算指令的执行速度。 每重复执行一次,地址指针SI和DI按方向标志自动修改,CX的值自动减1。 ②类型与格式: REP ;无条件重复(Repeat) REPE/REPZ ;相等/结果为零则重复(Repeat while Equal/Zero) REPNE/REPNZ ;不相等/结果非零则重复 (Repeat while Not Equal/Not Zero) ③重复前缀的运用: REP常与 (MOVS)连用,连续传送字符串。 直到传送完毕,即CX=0为止。 REPE和REPZ常与 (CMPS)连用,连续比较字符串。 当两个字符串相等(ZF=1)和CX≠0时,则重复进行比较,直到ZF=0或CX=0为止。 REPNE和REPNZ常与 (SCAS)连用,当结果非0(ZF=0)和CX≠0时,重复进行扫描,直到ZF=1或CX=0为止。 带有重复前缀的串指令执行过程中允许有中断进入。 1.MOVS字符串传送指令(Move String): 指令格式:MOVSB 和MOVSW 指令功能:SI作指针的源串中的一个字节或字→DI作指针的目的串; 自动修改指针SI和DI。 应用: ▲解决MOV指令不能直接在存储单元间进行数据传送的问题。 ▲若使用重复前缀,还可以利用一条指令传送一批数据。 例3.75 要求把数据段中以SRC_MESS为偏移地址的一串字符“HELLO!”,传送到附加段中以NEW_LOC开始的单元中。 解:DATA SEGMENT ;数据段 SRC_MESS DB ‘HELLO!’ ;源串 DATA ENDS ; EXTRA SEGMENT ;附加段 NEW_LOC DB 6 DUP(?) ;存放目的串 EXTRA ENDS ; CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:EXTRA START: MOV AX,DATA MOV DS,AX ;DS=数据段段址 MOV AX,EXTRA MOV ES,AX ;ES=附加段段址 LEA SI,SRC_MESS ;SI指向源串偏移地址 LEA DI,NEW_LOC ;DI指向目的串偏移地址 MOV CX,6 ;CX作串长度计数器 CLD ;清方向标志,地址增量 REP MOVSB ;重复传送串中各字节,直到CX=0 其中“REP MOVSB”指令可用以下几条指令代替: AGAIN: MOVSB DEC CX JNZ AGAIN? 2.CMPS

您可能关注的文档

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档