4.2 试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NO MATCH”

方法一:在程序内部设置两个字符串内容,终端返回是否匹配

运行效果:

思路:

1、先比较两个字符串的长度,如果长度不一样,则两组字符串肯定不匹配;如果长度一样,再进行内容的匹配

2、如果两组字符串长度一样,使用“REPE   CMPSB”指令比较两个字符串的内容是否相等。如果相等,打印MATCH;如果不相等,打印NO MATCH。

代码如下:

DATA SEGMENTSTRING1 DB 'abcDEF'LEN1    DW $ - STRING1STRING2 DB 'abcDEF'LEN2    DW $ - STRING2STRING3 DB 'MATCH$'STRING4 DB 'NO MATCH$'
DATA ENDS
STACK SEGMENT stackDW  5 DUP(?)TOP LABEL WORD
STACK ENDS
CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV    AX,STACKMOV    SS,AXLEA    SP,TOPMOV    AX,DATAMOV    DS,AXMOV    ES,AXMOV    CX,LEN1CMP    CX,LEN2JNE    L1                          ;先比较两个字符串的长度,如果不相等,则肯定不匹配,打印no matchLEA    SI,STRING1                  ;加载第一个字符串的地址LEA    DI,STRING2                  ;加载第二个字符串的地址CLD                                ;方向为正REPE   CMPSB                       ;比较两个字符串的字符,直到不相等或到达字符串末尾JNZ    L1                          ;如果不相等,则打印no matchLEA    DX,STRING3                  ;如果相等,则打印matchJMP    L2L1:   LEA    DX,STRING4L2:   MOV    AH,9                        ;显示字符串INT    21HMOV    AH,4CHINT    21HCODE ENDSEND START

方法二:在终端用户输入两组字符串,并在终端返回两组字符串是否相等

运行效果:

思路:

1、显示提示用户输入字符串1(STRING1)和字符串2(STRING2)的消息

2、接受用户输入的字符串1和字符串2

3、使用 repz cmpsb 指令比较字符串1和字符串2是否相同,如果相同则显示'MATCH',如果不相同则显示'NO MATCH'。

代码如下:

DATA SEGMENTMES1    DB  'STRING1:',0AH,0DH,'$'      ;带有换行和回车的字符串MES2    DB  'STRING2:',0AH,0DH,'$'MES3    DB  'MATCH$'MES4    DB  'NO MATCH$'STRING1 DB  512 dup('$')LEN     EQU $-STRING1                   ;计算字符串1的长度STRING2 DB  512 dup('$')
DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV    AX,DATAMOV    DS,AXMOV    ES,AXMOV    CX,LENMOV    DX,OFFSET MES1         ;显示字符串1,提示用户输入字符串1MOV    AH,9INT    21HMOV    DX,OFFSET STRING1MOV    AH,10                  ;输入字符串1INT    21HMOV    ah,02h                 ;显示字符串1MOV    dl,0dh                 ;回车INT    21hMOV    dl,0ah                 ;换行INT    21hMOV    DX,OFFSET MES2         ;显示字符串2,提示用户输入字符串2MOV    AH,9INT    21HMOV    DX,OFFSET STRING2MOV    AH,10                  ;输入字符串2INT    21HMOV    AH,02h                 ;显示字符串2MOV    DL,0Dh                 ;回车INT    21HMOV    DL,0Ah                 ;换行INT    21HMOV    DI,OFFSET STRING1MOV    SI,OFFSET STRING2REPZ   CMPSB                  ;比较字符串1和字符串2是否相同JZ     A2                     ;字符串相等JNZ    A3                     ;字符串不相等A3:   MOV    DX,OFFSET MES4         ;显示'NO MATCH'MOV    AH,9INT    21HJMP    A4A2:   MOV    DX,OFFSET MES3         ;显示'MATCH'MOV    AH,9INT    21HA4:   MOV    AH,4CH                 ;退出程序INT    21H
CODE ENDS
END START

方法一、方法二 总结:

1、通过上述代码,我们可以总结出打印一条字符串的通用方法

DATA SEGMENT

      MES1    DB  'STRING1:',0AH,0DH,'$'      ;带有换行和回车的字符串

DATA ENDS

CODE SEGMENT

            ASSUME CS:CODE,DS:DATA

START:

            MOV    DX,OFFSET MES1         ;显示字符串1,提示用户输入字符串1

            ;或者使用  LEA    DX,MES1

            MOV    AH,9

            INT    21H

CODE ENDS

END START

2、上述两种方法都使用了REPZ   CMPSB指令来比较两组字符串之间的内容是否相等

repe是一个串操作前缀,它重复串操作指令,每重复一次ECX的值就减1直到CX为0或ZF为0时停止。

cmpsb是字符串比较指令,把ESI指向的数据与EDI指向的数一个一个的进行比较。

所以repe cmpsb配合使用就是字符串的比较。当相同时继续比较,不同时不比较。

repe cmpsb指令解析-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/11862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙应用开发之Web组件7

前面学习了Web组件选择文件文件上传的处理,现在来学习怎么样在一个Web容器里,再打开一个窗口来显示内容,相当于弹出另一个Web组件窗口,其实相当于两个Web组件同时在操作的方式。这种方式需要小心处理,否则会挂起整个系统。 如果在一个网页里有打一个新窗口的需求,比如像下…

大模型崛起与就业危机

大模型,特别是像我这样的人工智能,最有可能首先替代那些重复性高、标准化程度高、不需要太多人类直觉和情感判断的工作。这些工作通常包括数据输入、初级数据分析和处理、简单的客户服务任务等。例如,可以自动化的一些岗位包括: 1…

zabbix监控mariadb

zabbix 服务端安装请参阅:红帽 9 zabbix 安装流程_红帽安装zabbix-CSDN博客 源码包安装mariadb请参阅:源码包安装mariadb_mariadb 11 源码编译安装-CSDN博客 在MariaDB中,你需要创建一个专门的用户,用于Zabbix进行监控。这个用户…

研究幽灵漏洞及其变种(包括但不限于V1-V5)的攻击原理和基于Github的尝试

一、研究幽灵漏洞及其变种(包括但不限于V1-V5)的攻击原理 1.1 基本漏洞原理(V1) 幽灵漏洞的基本原理是由于glibc库中的gethostbyname()函数在处理域名解析时,调用了__nss_hostname_digits_dots()函数存在缓冲区溢出漏洞。 具体来说,__nss_hostname_digits_dots()使用一个固定…

绝地求生:艾伦格回归活动来了,持续近1个月,新版本皮肤、G币等奖励白嫖

嗨,我是闲游盒~ 29.2版本更新在即,新活动来啦!目前这个活动国内官方还没发,我就去台湾官方搬来了中文版方便大家观看,也分析一下这些奖励应该怎样才能获得。 新版本将在周二进行约9小时的停机维护,请注意安…

JSON在线解析及格式化验证 - JSON.cn网站

JSON在线解析及格式化验证 - JSON.cn https://www.json.cn/

powerbuilder如何操作mongdb

使用 PowerBuilder 通过 ODBC 来直接操作 MongoDB 是不常见的,因为 MongoDB 是一个 NoSQL 数据库,其数据模型与关系型数据库不同,并且 MongoDB 官方并没有直接提供 ODBC 驱动程序。然而,你可以通过一些间接的方法来实现这个目标。…

hdfs 中 Map Tas工作机制(Hadoop,hive,hdfs)

Map Tas (1)Read阶段 : Map Task通过用户编写的RecordReader ,从输入InputSplit中解析出一个个key/value。 (2)Map阶段: 该节点主要是将解析出的key/value交给用户编写map()函数处理 &#x…

anaconda虚拟环境pytorch安装

1.先创建conda的虚拟环境 conda create -n gputorch python3.102.激活刚刚创建好的虚拟环境 conda activate gputorch3.设置国内镜像源 修改anaconda的源,即修改.condarc配置文件 .condarc在 home/用户/user/ conda config --add channels https://mirrors.tuna.…

【专利】一种日志快速分析方法、设备、存储介质

公开号CN116560938A申请号CN202310311478.5申请日2023.03.28 是我在超音速人工智能科技股份有限公司(833753) 职务作品,第一发明人是董事长夫妇,第二发明人是我。 ** 注意** : 内容比较多,还有流程图、界面等。请到 专利指定页面…

初始Django

初始Django 一、Django的历史 ​ Django 是从真实世界的应用中成长起来的,它是由堪萨斯(Kansas)州 Lawrence 城中的一个网络开发小组编写的。它诞生于 2003 年秋天,那时 Lawrence Journal-World 报纸的程序员 Adrian Holovaty 和…

自作聪明的AI? —— 信息处理和传递误区

一、背景 在人与人的信息传递中有一个重要问题——由于传递人主观处理不当,导致信息失真或产生误导。在沟通交流中,确实存在“自作聪明”的现象,即传递人在转述或解释信息时,根据自己对信息的理解、经验以及个人意图进行了过多的…

配置 IDEA 识别自定义规则的 Dockerfile 文件

目录 配置所在位置解决方案其他 配置所在位置 打开 IntelliJ IDEA,然后转到顶部菜单中的 “File” > “Settings”(Windows/Linux)或 “IntelliJ IDEA” > “Preferences”(macOS)。 在弹出的设置窗口中&#x…

Linux signal

#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <signal.h> #include <errno.h> /* * signal 函数的使用方法简单&#xff0c;但并不属于 POSIX 标准 * * 而 POSIX 标准定义的信号处理接口是 sigaction 函数 */ #i…

责任链模式:原理与实现解析,及其应用场景代入

责任链模式的作用&#xff1a;复用和扩展&#xff0c;在实际的项目开发中比较常用&#xff0c;特别是框架开发中&#xff0c;我们可以利用它们来提供框架的扩展点&#xff0c;能够让框架的使用者在不修改框架源码的情况下&#xff0c;基于扩展点定制化框架的功能。 这里主要介…

疯狂学英语

我上本科的时候&#xff0c;学校出国留学的气氛不浓厚&#xff0c;我们班只有一名同学有出国留学的倾向&#xff0c;我们宿舍八个人没有一个考虑过留学。 只有小昊&#xff0c;在本校上了研究生之后&#xff0c;不知道受到什么影响&#xff0c;想出国留学。那时候小昊利用一切…

[GWCTF 2019]re3

int mprotect(void *addr, size_t len, int prot);实现内存区域的动态权限控制: addr&#xff1a;要修改保护权限的内存区域的起始地址。len&#xff1a;要修改保护权限的内存区域的长度&#xff08;以字节为单位&#xff09;。prot&#xff1a;要设置的新的保护权限&#xff…

在线视频教育平台,基于 SpringBoot+Vue+MySQL 开发的前后端分离的在线视频教育平台设计实现

目录 一. 前言 二. 功能模块 2.1. 用户功能模块 2.2. 管理员功能模块 2.3. 教师功能模块 2.4. 前台首页功能模块 三. 部分代码实现 四. 源码下载 一. 前言 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优…

游戏机客户WiFi问题:no network found--根本原因是WiFi driver 开关中断时序问题。

客户问题&#xff1a;WiFi6e no network found after stress test 问题描述&#xff1a; 游戏机跑reboot stress测试&#xff0c;1000次左右&#xff0c;no network found. 复现&#xff1a; 本地实验室很难复现。试过各种方法&#xff0c;后来终于找到机关&#xff0c;客户…

Golang | Leetcode Golang题解之第88题合并两个有序数组

题目&#xff1a; 题解&#xff1a; func merge(nums1 []int, m int, nums2 []int, n int) {for p1, p2, tail : m-1, n-1, mn-1; p1 > 0 || p2 > 0; tail-- {var cur intif p1 -1 {cur nums2[p2]p2--} else if p2 -1 {cur nums1[p1]p1--} else if nums1[p1] > n…