汇编语言字符串比较与查找

来源:互联网 发布:数控机床的编程 编辑:程序博客网 时间:2024/06/05 03:59

答案仅供参考,大家还是自己写比较好。

(汇编语言实现)用字符串处理指令编制程序,处理字符串的比较和查找,显示结果。

要求:

(1)字符串的比较函数中,一个字符串在数据段定义,另一个字符串在程序执行时从键盘输入,必须定义键盘缓冲区。指出不相等的位置。

(2)在字符串中查找某个字符,并指出找到的位置。

第一问:

DATA SEGMENT    BUFF DB 255 DUP('?');定义一个缓冲区,缓冲区长度比需要比较的字符串长即可,缓冲区的?需要加单引号DATA ENDSEXT SEGMENT    MESS DB 'www.omegaxyz.com$';注意最后一定要加$EXT ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:EXTSTART:MOV AX,DATAMOV DS,AXMOV AX,EXTMOV ES,AX;套路LEA DX,BUFFMOV AH,0AHINT 21H;使用Dos 0AH命令向缓冲区输入字符串MOV CL,BUFF+1;注意Dos 0AH命令实际输入的字符数量保存在内存DX+1中(见附录),即BUFF+1,因此把BUFF+1的值给CLLEA SI,BUFF+2;需要使用CMPSB命令,从BUFF+2开始是真正输入的值赋值给SILEA DI,MESS;被比较的原始串CLDMOV BL,'0';为了显示串开始不同的地方,设置BL的初始值,由于显示的是ascii码所代表的值,因此把‘0’赋值给BLXY:INC BL   CMPSBLOOPZ XY;循环一次BL+1JZ YESMOV DL,BLJMP xxxxxxxxxxYES:MOV DL,'Y'xxxxxxxxxx:MOV AH,2    INT 21H;显示MOV AH,4CHINT 21HCODE ENDSEND START

第二问:

EXT SEGMENT    MESS DB 'www.omegaxyz.com$'EXT ENDS;注意要使用SCASB命令必须将数据保存在ESCODE SEGMENTASSUME CS:CODE,ES:EXTSTART:MOV AX,EXTMOV ES,AXMOV AH,01HINT 21H;调用Dos 01H命令,从键盘中输入1个字符并保存在ALMOV CX,17LEA DI,MESSCLDMOV BL,'0';为了寻找所求字符位置,设置一个寄存器用来保存XY:INC BL   SCASBLOOPNZ XY;LOOPNZ CX不等于0ZF=0即不相等时循环JZ YESMOV DL,'N';N说明没有查找到JMP DISPYES:MOV DL,BLDISP:MOV AH,2    INT 21HMOV AH,4CHINT 21HCODE ENDSEND START

结果截图请访问我的网站:omegaxyz.com

原创粉丝点击