汇编语言中如何实现字符串操作
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关汇编语言中如何实现字符串操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。软件:emu8086语言:汇编语言(Assemb
千家信息网最后更新 2026年11月02日汇编语言中如何实现字符串操作
这篇文章将为大家详细讲解有关汇编语言中如何实现字符串操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
软件:emu8086
语言:汇编语言(Assembly)
注意:小编列出了字符串匹配和字符串输入显示的代码,全部代码为小编独自一人编写,会有瑕疵,谨慎使用。
1.字符串匹配设计
1.1设计要求:
要求掌握提示信息的设置及读取键入信息的方法。设计程序,从键盘输入两个字符串进行比较,如相同,则显示"MATCH",否则显示"NO MATCH"。
1.2设计思路:
DOS功能调用输入两个字符串,通过CMPSB指令一个字节一个字节比较字符串,相同输出MATCH,不同输出NO MATCH。

1.3程序清单:
DATA SEGMENT pkey DB 0DH,0AH, 'please input str1 end by enter:','$' qkey DB 0DH,0AH,'please input str2 end by enter:','$' skey DB 0DH,0AH,'MATCH','$' tkey DB 0DH,0AH,'NO MATCH','$' BUFF1 DB 101,0,101 DUP(0) BUFF2 DB 101,0,101 DUP(0)`DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX ;数据段和堆栈段初始化 LEA DX,pkey MOV AH,9 INT 21H ;DOS功能调用,输出字符串 LEA DX,BUFF1 MOV AH,0AH INT 21H ;输入第一个字符串到BUFF1缓冲区 LEA DX,qkey MOV AH,9 INT 21H LEA DX,BUFF2 MOV AH,0AH INT 21H ;输入第二个字符串到BUFF2缓冲区 LEA SI,BUFF1 ;将第一个字符串给SI LEA DI,BUFF2 ;将第二个字符串给DI MOV CX,53 ;给计数器值 CLD ;清方向标准DF REPZ CMPSB ;一个字节一个字节比较字符串,SI和DI递增 JZ MATCH ;全部字节都相等输出MATCH LEA DX,tkey MOV AH,9 INT 21H ;不等输出NO MATCH JMP START MATCH: LEA DX,skey MOV AH,9 INT 21H ;DOS功能调用,输出MATCH JMP STARTCODE ENDS END START
1.4程序运行结果及分析:
主要是学会CMPSB指令的使用,清零DF标志使DI,SI递增,然后实现一个字节一个字节的比较。
图7 字符串匹配设计结果
2.字符串输入及显示设计
2.1设计要求:
要求掌握字符和数据的显示方法。设计程序,接收键盘键入字符串,包括字符和数字,并在终端显示。设计要求:有键入和结束提示信息,如在键入字符串之前提示:INPUT STRING,THE END FLAG IS $。要求统计键入字符串中数字(0-9)的个数和字符的个数,分行显示。
2.2设计思路:
判断在0~9范围内DI累加,判断在a~z和A~Z范围内SI累加,然后将SI和DI即字母个数和数字个数分别转十进制输出。
2.3程序清单:
DATA SEGMENT pkey DB 0dh,0ah,"input string,the end flag is $" skey DB 0dh,0ah,'abc length is:','$' tkey DB 0dh,0ah,'num length is:','$' DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX ;数据段堆栈段初始化 LEA DX,pkey MOV AH,9 INT 21H ;DOS功能调用,输出字符串 MOV DX,'$' MOV AH,2 INT 21H ;DOS功能调用,输出$ MOV DX,3AH MOV AH,2 INT 21H ;DOS功能调用,输出: MOV DX,0DH MOV AH,2 INT 21H ;DOS功能调用,归位 MOV DX,0AH MOV AH,2 INT 21H ;DOS功能调用,换行 MOV SI,0 MOV DI,0 ;清零,SI存放字母个数,DI存放数字个数 INPUT: MOV AH,1 INT 21H CMP AL,'$' JZ INEND CMP AL,'z' JA INPUT CMP AL,'a' JAE ABC1 ;输入为a~f,SI加1 CMP AL,'Z' JA INPUT CMP AL,'A' JAE ABC1 ;输入为A~F,SI也加1 CMP AL,'9' JA INPUT CMP AL,'0' JAE NUM1 ;输入为0~9,DI加1 JMP INPUT ABC1: INC SI JMP INPUT NUM1: INC DI JMP INPUT INEND: MOV BX,0 MOV CX,10 MOV AX,SI ;将字母个数给AX(十六进制转十进制) LP1: MOV DX,0 DIV CX ;AX表示的32位数除以10,商放在AX,余数放在DX PUSH DX ;将余数压入栈 INC BX CMP AX,0 ;商不为0就继续除10 JNZ LP1 LEA DX,skey MOV AH,9 INT 21H ;DOS功能调用,输出字符串LLP1: POP DX ;DX中数据依次出栈并显示 ADD DX,30H MOV AH,2 INT 21H ;DOS功能调用,输出字母个数 DEC BX JNZ LLP1 MOV BX,0 MOV AX,DI ;将数字个数给AX(十六进制转十进制) LP2: MOV DX,0 DIV CX ;AX表示的32位数除以10,商放在AX,余数放在DX PUSH DX ;将余数压入栈 INC BX CMP AX,0 JNZ LP2 ;商不为0就继续除10 LEA DX,tkey MOV AH,9 INT 21H ;DOS功能调用,输出字符串 LLP2: POP DX ;DX中数据依次出栈并显示 ADD DX,30H MOV AH,2 INT 21H ;DOS功能调用,输出数字个数 DEC BX JNZ LLP2 JMP START CODE ENDS END START
2.4程序运行结果及分析:
当输入字母或数字个数大于10之后统计输出比较麻烦,这里使用了除以10循环并存入堆栈再依次输出的方法实现输出。
图8 字符串输入及显示设计结果
关于汇编语言中如何实现字符串操作就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
字符
字符串
输出
功能
个数
设计
输入
字节
数字
程序
字母
数据
语言
余数
结果
信息
十进制
堆栈
方法
十进
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花魁咖啡
科技与互联网
广州互联网络科技有限公司
润盈互联网科技
中盈科技互联网信息有限公司
中国的互联网科技企业的崛起
金融科技与互联网金融相同和不同
广州恒生互联网科技有限
知域互联网科技有限公司大骗子
中国互联网十大科技股排名
互联网行业科技股
威龙国际互联网科技公司
科技赋能视角下互联网保险发展
本届互联网大会上的黑科技
中国新注册互联网科技
西安左小互联网科技有限公司
数字科技和互联网金融哪个好
银川新华互联网科技学校招聘
中国主要互联网科技公司
利用互联网等科技手段
花魁咖啡
精品咖啡豆
互联网金融与金融科技
互联网 科技创新
云电互联网科技
互联网科技公司介绍
成都狮子座互联网科技
云创客互联网科技公司
中国科技互联网公司收入
张召忠谈中国互联网科技