我是靠谱客的博主 懵懂嚓茶,最近开发中收集的这篇文章主要介绍汇编语言字符串比较与查找,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

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

要求:

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

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

第一问:

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

第二问:

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

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

最后

以上就是懵懂嚓茶为你收集整理的汇编语言字符串比较与查找的全部内容,希望文章能够帮你解决汇编语言字符串比较与查找所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部