第4章 汇编语言程序设计基本方法精品.ppt
文本预览下载声明
4.3.8 字符串处理 字符串处理是指对一系列的字母或数字的代码进行处理。 计算机中字符代码一般都采用ASCII码表示,每个字符占一个字节,一个字符串存放在一个连续的存储区中。 字符串处理通常包括求字符串的长度、字符串的移动、字符串的查找(搜索)、字符串的删除与插入等功能。这些功能在文本编辑程序中是不可缺少的。 字符串处理(2) 1、字符串操作指令 字符串传送指令 指令格式: MOVS DST, SRC MOVSB MOVSW 主要功能: ((ES:DI))←((DS:SI)) 字操作: (SI)←(SI)±2,(DI)←(DI)±2 字节操作:(SI)←(SI)±1,(DI)←(DI)±1 说明: 地址指针SI和DI的修正是可以递增,也可以递减的。 当标志寄存器中方向标志位DF=0时,地址指针以递增方式修正;反之,则以递减方式修正。 递增或递减的值将根据指令是字操作还是字节操作而定。 对于DF位的状态,在编写程序时,可以用CLD指令或STD指令将其清零或者置位。 字符串处理(3) LENG DW 10 DAT1 DW 10 DUP(?) DAT2 DW 20 DUP(?) CLD ;DF=0 MOV AX, SEG DAT1 MOV DS, AX MOV ES, AX LEA SI, DAT1 LEA DI, DAT2 MOV CX, LENG AGAIN: MOVSW LOOP AGAIN 字符串处理(4) 2、字符串比较指令 指令格式: CMPS DST,SRC CMPSB CMPSW 主要功能: ((DS:SI))-((ES:DI)) 建立标志 字操作: (SI)←(SI)±2,(DI)←(DI)±2 字节操作:(SI)←(SI)±1,(DI)←(DI)±1 说明: 相减时是源串减去目的串,即SRC-DST 比较后只影响标志位,源串和目的串保持不变 指令的寻址方式与指针的修正同字符串传送指令 下面试举一个例子,说明该指令的功能。 字符串处理(5) LENG DW 4 STRING1 DB ‘THIS’ STRING2 DB ‘THAT’ CLD MOV AX, SEG STRING1 MOV DS, AX MOV ES, AX LEA SI, STRING1 LEA DI, STRING2 MOV CX, LENG AGAIN: CMPS STRING2, STRING1 JNE NO_SAME LOOP AGAIN SAME: … NO_SAME: … 字符串处理(6) 3、字符串扫描指令 指令格式:SCAS DST SCASB SCASW 主要功能: 累加器AX或AL中内容与ES:DI所指单元内容比较,根据结果设置标志位,累加器和目的操作数不受影响 字操作: (AX)-((ES:DI)) 建立标志 (DI)←(DI)±2 字节操作:(AL)-((ES:DI)) 建立标志 (DI)←(DI)±1 下面试举一个例子,说明该指令的功能。 字符串处理(7) LENG DW 4 STRING DB ‘THIS’ CLD MOV AX, SEG STRING MOV ES, AX
显示全部