實驗一 字符串匹配實驗

一、實驗目的 ??????????????

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.pswp.cn/bicheng/76889.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/76889.shtml
英文地址,請注明出處:http://en.pswp.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;從而映射到位數…