- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
X汇编语言与汇编程序—串操作与程序控制指令.ppt
GLUT_C 2013-08 8086指令系统(续) 2.3.5 串操作指令 串操作指令在教材P.128 字符串传送指令 字符串比较指令 字符串检索指令 取字符串指令 存字符串指令 1.字符串传送指令 字符串传送指令MOVSB/MOVSW 格式: MOVSB ;用于字节传送 MOVSW ;用于字传送。 特点: (1) MOVSB、MOVSW指令,源数据串的默认段基址DS,有效地址为SI,目的串段基址ES,有效地址DI。 (2)指令前面常加重复前缀REP,重复执行n次。 (3)重复执行次数 由CX指定 (4)每次传送,DI,SI自动修改(字节传送±1,字传送±2),加减由方向控制为DF确定。 DF 0 SI、DI +1 (+2) DF 1 SI、DI -1 (-2) 如:将内存中11000H开始的100字节传送到32000H开始的连续地址空间 MOV AX,1000H MOV DS, AX ;源数据串段基地址 MOV AX, 3000H MOV ES, AX ;目的数据串段基地址 MOV SI,1000H ;源地址为1000H MOV DI,2000H ;目的地址为2000H MOV CX,100 ;字符串长100个字节 CLD ;方向标志清0,使指针 ;按增量方向修改 REP MOVSB ;将源地址开始的100个 ;字节传送到目的地址 MOVSB指令注意点: ① 源地址用SI寄存器指出 目的地址用DI寄存器指出 ② CX中为字节数或字数。 ③ 若DF为0,则用 MOVSB时,每传送一次,SI和DI自动增1; MOVSW时,每传送一次,SI和DI自动增2。 ④ DF 1,则SI,DI变化方向? 2. 字符串比较指令 字符串比较指令 CMPSB CMPSW 功能: 把DS段由SI所指的字节或者字和ES段由DI所指的字节或者字相比较。 设置标志位 该指令通常与条件重复指令配合使用 CMPSB/CMPSW指令注意点: ① 预先将: 源字符串的首址设置到DS段和SI中 目的字符串的首址设置到ES段和DI中 比较的字节数或字数设置到CX中 设置方向标志 ② 在DF为0或为1,影响比较SI和DI的修改方向。 ③ CMPSB/CMPSW指令通常加重复前缀_条件重复前缀 REPNZ/REPNE-----比较不等于0/不相等重复 REPZ/REPE ----比较等于0/相等重复 它在两个字符串中寻找第一个不相等或相等的元素 例:比较1000:0e00H与1000:0400H连续8字节是否相等,只要有一个不相同的字节,则设置AL 0A5H表示两个字符串不想等,否则赋值AL 00H。 CMP_S: MOV AX,1000H MOV DS,AX MOV ES,AX MOV DI,0400H MOV SI,0E00H CLD MOV CX,0008 REPZ CMPSB ;比较相等,继续,不等,向下执行 JNZ DONE ;比较完毕,如果有一个不相等,转 MOV AL,0 ;比较完毕,最后一个也相等,AL 00 JMP CMP_END ;则全部相等,结束 DONE: MOV AL,0A5H ;只要有一字节不等,即设置AL 0A5H CMP_END: RET 3. 字符串检索指令 SCASB SCASW 功能: 将AL中的字节或者AX中的字与位于ES:DI段指定地址内存单元的字节或字相比较,设置标志位 使用前缀: REPZ/REPE ;相同继续比较 REPNZ/REPNE ;不相同继续比较 寻找第一个匹配的字节、或字。 例: 在首地址为 ABCD长度为200的字符串中查找字符“#”,若有该字符,则将查找次数存入DI,字符存放有效地址存入BX,如无该字符,则置SI 0,BX 0 4. 取字符串指令 LODSB ;AL←DS:SI, SI+1或 SI-1 LODSW ;AX ←DS:SI,SI+2 或 SI -2 功能: 将位于DS段由SI所指的存储单元的内容取到AL或AX中。 DF 1时地址作减量修改 DF 0时地址作增量修改 注意:不使用重复前缀。 Pentium 还有32位取指令,取到EAX 5. 存字符串指令 STOSB/STOSW 功能: 把AL或AX中的数据存到ES段DI寄存器所指的内存单元。 可以使用重复前缀。 当寄存器AL、AX中的数不变时,使用重复前缀,则是对某一RAM区域进行填充。 例如上电复位后,对某一块内存区域全部填充0 2.3.6 控制转移指令 控制转移指令中包括5类指令,即 子程序调用和返
文档评论(0)