实验一 字符串匹配实验

一、实验目的               

1.熟悉汇编语言编程环境和DEBUG调试程序的使用。

2.掌握键盘输入字符串的方法和分支程序的设计。

二、实验内容

编程实现:从键盘分别输入两个字符串,然后进行比较,若两个字符串的长度和对应字符都完全相同,则显示“MATCH”,否则显示“NO MATCH”。

三、实验程序(必须加注释)和结果

程序代码:

; 定义一个名为crlf的宏,用于输出回车(0DH)和换行(0AH)

crlf    macro

        ; 功能:输出回车符

        mov ah,2

        mov dl,0dh

        int 21h

        ; 功能:输出换行符

        mov ah,2

        mov dl,0ah

        int 21h

        endm

; 定义数据段

DATAS SEGMENT

    ; 定义一个字符串常量,表示匹配成功的消息

    MESS1 DB 'MATCH',0DH,0AH,'$'

    ; 定义一个字符串常量,表示匹配失败的消息

    MESS2 DB 'NO MATCH',0DH,0AH,'$'

    ; 定义一个字符串常量,用于提示输入第一个字符串

    MESS3 DB 'INPUT STRING1:',0DH,0AH,'$'

    ; 定义一个字符串常量,用于提示输入第二个字符串

    MESS4 DB 'INPUT STRING2:',0DH,0AH,'$'

    ; 定义一个包含个人信息的字符串常量

    MESS5 DB 'GUOZHIHONG  Kruanjian221 2022900624',0DH,0AH,'$'

    ; 定义一个字符串常量,用于提示按任意键继续或按ESC键退出

    MESS6 DB 'Press any key to continue or press ESC exit',0DH,0AH,'$'

    ; 定义一个缓冲区用于存储输入的第一个字符串,最多21个字符

    STR1  DB 21,?,21 DUP(0)

    ; 定义一个缓冲区用于存储输入的第二个字符串,最多21个字符

    STR2  DB 21,?,21 DUP(0)

    ; 此处可添加更多数据段相关代码,如果有的话

DATAS ENDS

; 定义代码段

CODES SEGMENT

    ASSUME CS:CODES,DS:DATAS,es:datas

START:

again: ; 循环开始的标签,用于实现多次执行字符串比较操作

    MOV AX,DATAS

    MOV DS,AX

    ; 输出包含个人信息的字符串

    mov ah,9

    mov dx,offset mess5

    int 21h

    ; 输出提示输入第一个字符串的消息

    mov ah,9

    mov dx,offset mess3

    int 21h

    ; 输入第一个字符串到STR1缓冲区

    mov ah,0ah

    mov dx,offset str1

    int 21h

    crlf ; 调用crlf宏,输出回车换行

    ; 输出提示输入第二个字符串的消息

    mov ah,9

    mov dx,offset mess4

    int 21h

    ; 输入第二个字符串到STR2缓冲区

    mov ah,0ah

    mov dx,offset str2

    int 21h

    crlf ; 调用crlf宏,输出回车换行

    ; 比较两个输入字符串的长度(第一个字符为实际长度)

    mov cl,str1 + 1

    cmp cl,str2 + 1

    jnz noequ ; 如果长度不相等,跳转到noequ标签

    mov ch,0

    mov si,offset str1+2

    mov di,offset str2 + 2

next:

    mov al,[si]

    cmp al,[di]

    jnz noequ ; 如果对应字符不相等,跳转到noequ标签

    inc si

    inc di

    loop next

    ; 如果字符串完全匹配,输出匹配成功的消息

    mov ah,9

    mov dx,offset mess1

    int 21h

    jmp post_judgment

noequ:

    ; 如果字符串不匹配,输出不匹配的消息

    mov ah,9

    mov dx,offset mess2

    int 21h

    jmp post_judgment

post_judgment:

    ; 输出按任意键继续或按ESC键退出的提示消息

    mov ah,9

    mov dx,offset mess6

    int 21h

    mov ah, 0

    int 16h ; 读取键盘输入

    cmp al, 1BH ; 比较输入是否为ESC键(ASCII码为1BH)

    je exit ; 如果是ESC键,跳转到exit标签退出程序

    jmp again ; 如果不是ESC键,跳转到again标签开始下一轮循环

exit:

    MOV AH,4CH

    INT 21H

CODES ENDS

END START

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

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

相关文章

添加登录和注册功能

先写前端再写后端 前提&#xff1a;ideavue3mybatisspringBoot3前后端分离实现对一张表的增删改查&#xff08;完整代码版&#xff09;-CSDN博客 项目地址 1.添加一个Login.vue视图 <template><div class"login_container"><div class"login…

【Windows】系统安全移除移动存储设备指南:告别「设备被占用」弹窗

Windows系统安全移除移动存储设备指南&#xff1a;告别「设备被占用」弹窗 解决移动硬盘和U盘正在被占用无法弹出 一、问题背景 使用Windows系统时&#xff0c;经常遇到移动硬盘/U盘弹出失败提示「设备正在使用中」&#xff0c;即使已关闭所有可见程序。本文将系统梳理已验证…

Springboot下载文件, 文件名中文是乱码, 空格变加号

默认把文件名放上去, 中文会乱码, 文件名种有空格, 就会被截断 public void download(HttpServletResponse response){// 文件名先进行url编码, 避免乱码问题// 把用%20进行替换fileName URLEncoder.encode(fileName, "UTF-8").replace("", "%20&qu…

MySQL 超详细安装教程与常见问题解决方案

一、MySQL 安装教程 1. Windows 系统安装&#xff08;以 MySQL 8.0 为例&#xff09; 步骤 1&#xff1a;下载 MySQL Installer 访问 MySQL 官网下载页面。 选择 Windows (x86, 64-bit), MSI Installer&#xff08;推荐使用完整版 mysql-installer-web-community-8.0.xx.xx.…

【cuda学习日记】5.2.1 共享内存额外篇

共享内存(Shared Memory) 1.是一种低延迟、高带宽的片上内存 2.由同一个Block内的所有线程共享 3.生命周期与Block相同 4.访问速度比全局内存快约100倍 Block(线程块) 1.GPU执行的基本单位&#xff0c;包含一组线程 2.多个Block组成Grid(网格) 3.Block内的线程可以通过共享内存…

[250411] Meta 发布 Llama 4 系列 AI 模型 | Rust 1.86 引入重大语言特性

目录 Llama 4 家族登场&#xff1a;开启原生多模态 AI 创新新纪元Rust 1.86.0 版本发布亮点主要新特性与改进其他重要信息 Llama 4 家族登场&#xff1a;开启原生多模态 AI 创新新纪元 Meta AI 近日发布了其最新、最先进的 Llama 4 系列人工智能模型&#xff0c;标志着 AI 技术…

ArrayList 和 数组 的区别

定义与本质 数组&#xff1a;是 Java 语言内置的数据结构&#xff0c;是存储相同类型元素的连续内存空间。它是一个基本的语言特性&#xff0c;在内存中是一块连续的区域。ArrayList&#xff1a;是 Java 集合框架中的一个类&#xff0c;属于动态数组。它是基于数组实现的&#…

​‌FireCrawl‌爬虫工具​, Craw4ai

‌FireCrawl‌是一款开源的AI爬虫工具&#xff0c;专门用于Web数据提取&#xff0c;并将其转换为Markdown格式或其他结构化数据。FireCrawl特别适合处理使用JavaScript动态生成的网站&#xff0c;能够自动抓取网站及其所有可访问的子页面内容&#xff0c;并将其转换为适合大语言…

通信原理-非线性调制

今天给大家带来的是关于通信原理中非线性调制的内容,一起来看看吧&#xff01;&#xff01;&#xff01; 1.角度调制 2.FM与PM的区别 3.单音调制FM 4.窄带调频 5.宽带调频 5.1FM信号的频谱 5.2FM信号的带宽 5.3FM信号的功率分配 6.FM信号的产生与解调 6.1FM信号的产生 6.2FM…

文心一言开发指南03——千帆大模型平台产品优势

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 千帆大模型平台作为百度智能云推出的企业级大模型一站式平台&#xff0c;具有显著的产品优势。千帆大模型平台以其基础强大、流程完善、运行稳定和安全可靠的产品优势成为企…

mysql DQL

一.基本查询 1.查询多个字段 2.查看所有字段 3.设置别名 4.去除重复记录 二.条件查询 1.大于小于等于 2.查询 身份证为空的 没有所以没有记录 3.在15到20这个区间范围内 4.or/in 或者 4.like 匹配 &#xff08;_匹配单个字符 %匹配多个字符&#xff09; 查询员工信…

关于 软件开发模型 的分类、核心特点及详细对比分析,涵盖传统模型、迭代模型、敏捷模型等主流类型

以下是关于 软件开发模型 的分类、核心特点及详细对比分析&#xff0c;涵盖传统模型、迭代模型、敏捷模型等主流类型&#xff1a; 一、软件开发模型分类及核心特点 1. 瀑布模型&#xff08;Waterfall Model&#xff09; 核心特点&#xff1a; 线性阶段划分&#xff1a;需求分…

2025年第十六届蓝桥杯省赛C++ A组真题

2025年第十六届蓝桥杯省赛C A组真题 1.说明2.题目A&#xff1a;寻找质数&#xff08;5分&#xff09;3.题目B&#xff1a;黑白棋&#xff08;5分&#xff09;4. 题目C&#xff1a;抽奖&#xff08;10分&#xff09;5. 题目D&#xff1a;红黑树&#xff08;10分&#xff09;6. 题…

JVM初探——走进类加载机制|三大特性 | 打破双亲委派SPI机制详解

目录 JVM是什么&#xff1f; 类加载机制 Class装载到JVM的过程 装载&#xff08;load&#xff09;——查找和导入class文件 链接&#xff08;link&#xff09;——验证、准备、解析 验证&#xff08;verify&#xff09;——保证加载类的正确性 准备&#xff08;Prepare&…

分布式微服务系统架构第106集:jt808,补充类加载器

加群联系作者vx&#xff1a;xiaoda0423 仓库地址&#xff1a;https://webvueblog.github.io/JavaPlusDoc/ https://1024bat.cn/ 类加载器 类与类加载器 判断类是否“相等” 任意一个类&#xff0c;都由加载它的类加载器和这个类本身一同确立其在 Java 虚拟机中的唯一性&#xf…

利用 pyecharts 实现地图的数据可视化——第七次人口普查数据的2d、3d展示(关键词:2d 、3d 、map、 geo、涟漪点)

参考文档&#xff1a;链接: link_pyecharts 官方文档 1、map() 传入省份全称&#xff0c;date_pair 是列表套列表 [ [ ],[ ] … ] 2、geo() 传入省份简称&#xff0c;date_pair 是列表套元组 [ ( ),( ) … ] 1、准备数据 population_data&#xff1a;简称经纬度 population_da…

Enovia许可释放

随着企业规模的扩大和业务的不断增长&#xff0c;Enovia许可证的管理变得至关重要。在许多情况下&#xff0c;企业可能面临许可证资源浪费或不足的问题。为了解决这一问题&#xff0c;Enovia提供了许可释放功能&#xff0c;帮助企业更加灵活地管理和使用许可证资源。本文将介绍…

每日一道leetcode(回来了!!!)

236. 二叉树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; 题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足…

【Redis】布隆过滤器应对缓存穿透的go调用实现

布隆过滤器 https://pkg.go.dev/github.com/bits-and-blooms/bloom/v3 作用&#xff1a; 判断一个元素是不是在集合中 工作原理&#xff1a; 一个位数组&#xff08;bit array&#xff09;&#xff0c;初始全为0。多个哈希函数&#xff0c;运算输入&#xff0c;从而映射到位数…