iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >汇编语言中如何实现字符串操作
  • 400
分享到

汇编语言中如何实现字符串操作

2023-06-21 20:06:06 400人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关汇编语言中如何实现字符串操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。软件:emu8086语言:汇编语言(Assembly)注意:小编列出了字符串匹配和字符串

这篇文章将为大家详细讲解有关汇编语言中如何实现字符串操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

软件: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 字符串输入及显示设计结果

关于汇编语言中如何实现字符串操作就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 汇编语言中如何实现字符串操作

本文链接: https://www.lsjlt.com/news/300708.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 汇编语言中如何实现字符串操作
    这篇文章将为大家详细讲解有关汇编语言中如何实现字符串操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。软件:emu8086语言:汇编语言(Assembly)注意:小编列出了字符串匹配和字符串...
    99+
    2023-06-21
  • 汇编语言系列之汇编实现字符串操作
    目录1.字符串匹配设计1.1设计要求:1.2设计思路:1.3程序清单:1.4程序运行结果及分析:2.字符串输入及显示设计2.1设计要求:2.2设计思路:2.3程序清单:2.4程序运行...
    99+
    2024-04-02
  • 不同语言中字符串操作与Go语言字符串操作的差异
    go 语言字符串操作的特点:使用 utf-8 编码表示字符串用 + 运算符拼接字符串用 [] 操作符索引字符串用 [start:end] 语法切片字符串用 == 运算符比较字符串 字符...
    99+
    2024-04-13
    go语言 字符串操作 python c++
  • Go语言字符串常见操作的使用汇总
    目录1. 字节数组2. 头尾处理3. 位置索引4. 替换5. 统计次数6. 重复7. 大小写8. 去除字符9. 字符串切片处理10. 数值处理1. 字节数组 字节与字符的区别 字节(...
    99+
    2024-04-02
  • shell如何实现字符串操作
    小编给大家分享一下shell如何实现字符串操作,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码如下:工作中字符串操作举例 filename='/home...
    99+
    2023-06-09
  • vbs如何实现字符串操作
    这篇文章给大家分享的是有关vbs如何实现字符串操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。str="a|b|c|d" 要求写一段小程序得出: a|b|c|d b|c|d|a c|d|a|...
    99+
    2023-06-08
  • c语言中如何实现逆序字符串
    这篇文章主要介绍了c语言中如何实现逆序字符串,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用指针逆序字符串思路:给两个指针,left放在字符串左侧,right放在最后一个有...
    99+
    2023-06-26
  • 汇编语言功能字符串大小写转换实现实例详解
    目录问题1:将data段中的第一个字符串转换成大写,第二个字符串转换成小写问题2:将data段中每个单词的头一个字母改成大写字母问题3:将data段中每个单词改为大写字母问题4:将d...
    99+
    2024-04-02
  • C语言中字符串常用操作总结
    目录字符串的定义和初始化字符串的赋值字符串的输入输出字符串的比较字符串的拼接字符串的查找和替换字符串的常用函数strcpy函数strcat函数strlen函数strcmp函数strc...
    99+
    2023-05-20
    C语言字符串常用操作 C语言字符串操作 C语言字符串
  • 使用C语言实现字符串逆序操作案例
    编写一个函数 reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。 非递归实现: #inc...
    99+
    2024-04-02
  • c语言如何实现字符串反转
    C语言可以通过循环遍历字符串并交换字符的位置来实现字符串的反转。具体步骤如下:1. 首先,定义一个指向字符串的指针。2. 使用`st...
    99+
    2023-09-12
    c语言
  • c语言如何实现字符串复制
    在C语言中,可以使用strcpy()函数来实现字符串复制。具体实现方法如下: #include <stdio.h> #i...
    99+
    2024-04-09
    c语言
  • C语言如何实现字符串替换
    在C语言中可以通过循环遍历字符串的每个字符,然后判断是否需要替换,如果需要替换则使用新的字符替换原字符。下面是一个示例代码,实现了字...
    99+
    2023-08-24
    C语言
  • R语言中字符串的拼接操作实例讲解
    在R语言中 paste 是一个很有用的字符串处理函数,可以连接不同类型的变量及常量。 函数paste的一般使用格式为: paste(..., sep = " ", collaps...
    99+
    2024-04-02
  • C语言strlen,strcpy,strcmp,strcat,strstr字符串操作函数实现
    目录strlenstrcpystrcmpstrcatstrstr前言: 今天来实现strlen、strcpy、strcmp、strcat、strstr三个比较常见的字符串操作函数,具...
    99+
    2024-04-02
  • JavaScript中怎么实现字符串操作
    JavaScript中怎么实现字符串操作,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 拆分字符串JavaScript中的 split() 方法使用指定的分隔符字符串将一个...
    99+
    2023-06-20
  • C语言中操作字符串的函数详解
    目录一、函数表二、strlen实例三、strcmp实例四、strcpy实例五、stract实例六、strchr实例总结一、函数表 函数名函数功能strlensize_t strlen...
    99+
    2024-04-02
  • 编程语言中如何实现无重复字符的最长子串
    小编给大家分享一下编程语言中如何实现无重复字符的最长子串,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目:给定一个字符串,请你找出其中不含有重复字符的 ...
    99+
    2023-06-02
  • GO语言字符串常用操作小结
    目录字符串简介常用方法中文字符串截取反转字符串字符串大小写操作去除字符串首位空格合并字符串分割字符串字符串简介 字符串是一段固定长度字符连接起来的字符序列,GO语言中的字符串是由单个...
    99+
    2023-02-09
    GO 字符串常用操作 GO 字符串操作
  • 汇编语言功能字符串大小写转换实现方法是什么
    本篇内容介绍了“汇编语言功能字符串大小写转换实现方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题1:将data段中的第一个字符串...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作