AHU 汇编 实验三

  • 实验名称:实验三 串操作指令

二、实验内容:

在数据段定义缓冲区,从键盘接收两串字符到两个缓冲区,将第二串中与第一串字符不一致的字符显示在屏幕。

  • 实验过程:

源代码:

data segmentmess1 db 16,?,16 dup(?),13,10mess2 db 16,?,16 dup(?),13,10buff1 db 'Please input string1: $'buff2 db 'Please input string2: $'buff3 db 'NO.$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov es,ax        ;let ds and ex link with data segmentmov dx,offset buff1mov ah,9int 21h          ;output buff1lea dx,mess1mov ah,0ahint 21hmov dl,13mov ah,2int 21hmov dl,10mov ah,2int 21h          ;input mess1 and operate enter for next inputmov dx,offset buff2mov ah,9int 21h          ;output buff2lea dx,mess2mov ah,0ahint 21hmov dl,13mov ah,2int 21hmov dl,10mov ah,2int 21h          ;input mess2 and operate entermov cx,0         ;clear cxmov cl,mess2+1   ;assign cl as mess1+1 which is point to real string sizelea si,mess1+2   ;pass mess1 string effective address to dilea di,mess2+2   ;pass mess2 string effective address to siscan:cld              ;set directionrepe cmpsb       ;compare mess1 and mess2, when cx=0 or zf=0 exitjnz output       ;ZF=0 jump to outputjmp exitoutput:mov dx,offset buff3mov ah,9int 21h          ;output buff3xor ax,ax        ;clear axmov al,mess2+1   ;assign al with mess2 real lengthsub al,cl        ;label the location of different characteradd al,'0'mov dl,al        ;ASCII codemov ah,2int 21hmov dl,':'mov ah,2int 21h          ;output NO.x:mov dl, byte ptr ds:[si-1]mov ah,2int 21h          ;output mess1 original charactermov dl,'-'mov ah,2int 21h          ;output '-'mov dl, byte ptr es:[di-1]  ;assign dl with different character which is the front di point tomov ah,2int 21h          ;output different charactermov dl,13mov ah,2int 21hmov dl,10mov ah,2int 21h         ;operate enterjcxz exit       ;when cx=0 jump to exitjmp scan        ;when cx!=0, go on scanning next characterexit:mov ah,4chint 21hcode endsend start

运行截图:

  • 实验小结:

本次实验完成串扫描任务,任务内容是找出两个串中的不同字符,按照以下格式输出结果:“NO.X:x-x”,在本次实验中,我对数据段,缓冲区的概念了解地更为深刻,在老师的指导下我知道了回车和换行是两种不同的操作,一个是13号命令,一个是10号命令,此外我更加深刻地认识到了,汇编在计算机中运行的数据或是指令全部都是以二进制代码形式执行的。所以在输出结果的时候,一定要把对应的结果转换成其ASCII码形式,否则得不到想要的结果。此外我还加强了对串操作指令的熟悉,要想知道一个指令的工作逻辑以及后面一条指令与其的关系,首先我们要关注“这条指令的执行前提”以及“该指令执行完后的影响”。在我们前面算术运算类指令章节中提及过比较指令CMP,CMP属于减法运算指令,影响除DF外的其他全部标志位,但是不影响目标操作数的值,因此比较类指令后面跟着的一定是和标志位有关系的跳转指令。与前面的数据传送类指令一样,传比较指令也分为三个:CMPS、CMPSB、CMPSW,其中CMPSB、CMPSW均采用隐含寻址的方法,目标操作数默认为DS:SI,源操作数默认为ES:DI

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

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

相关文章

数据分析-Pandas如何画图验证数据随机性

数据分析-Pandas如何画图验证数据随机性 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表…

【字典合集】SecLists-更全面的渗透测试字典 v2024.1

下路路径 SecLists-更全面的渗透测试字典 v2024.1 简介 SecLists 是一个致力于收集各种安全字典的开源项目。这些字典包括但不限于:密码字典、用户名字典、网络扫描结果、漏洞利用载荷、web shells、可用于渗透测试的Payloads、以及其他各种安全相关的字典。 这…

Docker初体验之安装部署和镜像加速(openeuler版)

安装部署: 本人使用的为openeuler版本,无法使用二进制进行安装(使用二进制安装时,无法使用docker中的补全命令,需要重新进行配置)在此使用yum直接进行安装。 [rootlocalhost ~]# yum install docker 镜像…

在VMvare中虚拟机安装centos7和初始设置

下载镜像 阿里云的镜像站:https://mirrors.aliyun.com/centos/7/isos/x86_64/ 创建虚拟机过程 虚拟机创建过程比较简单,以下在VMvare16中进行安装 点击左上角,文件-新建虚拟机: 选择典型 选择刚刚下载好的镜像 输入虚拟机…

如何判断DNS解析故障?

DNS解析负责将域名解析到对应的IP地址,从而实现用户通过域名访问站点的效果。因此DNS解析是整个互联网中非常关键和基础的一个环节,但也是众多网站运营者和管理者经常忽视的一个环节。所以在出现DNS解析错误时,很多人都会感到手足无措&#x…

【Echarts】曲线图上方显示数字以及自定义值,标题和副标题居中,鼠标上显示信息以及自定义信息

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《前端》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握…

第七次作业

IPSEC VPPN实验配置 目标:在FW5和FW3之间建立一条IPSEC通道,保证10.0.2.0/24网段可以正常访问到192.168.1.0/24 1.FW1和FW2进行双机热备(之前实验没保存,可看上个实验) 还有一些配置前面实验有。 2.场景选择点对点…

探究精酿啤酒的秘密:原料中的天然酵母与纯净水质

在啤酒的世界中,Fendi Club精酿啤酒以其与众不同的口感和深远的余味吸引了全球的啤酒爱好者。而这一切,都归功于其选用的上好原料,特别是天然酵母和纯净水质。 天然酵母是啤酒的灵魂。与工业生产的啤酒酵母不同,天然酵母富含丰富的…

分布式之Ribbon使用以及原理

Ribbon使用以及原理 1、负载均衡的两种方式 服务器端负载均衡 传统的方式前端发送请求会到我们的的nginx上去,nginx作为反向代理,然后路由给后端的服务器,由于负载均衡算法是nginx提供的,而nginx是部署到服务器端的,所…

20240310-1-Java后端开发知识体系

Java 基础 知识体系 Questions 1. HashMap 1.8与1.7的区别 1.71.8底层结构数组链表数组链表/红黑树插入方式头插法尾插法计算hash值4次位运算5次异或运算1次位运算1次异或运算扩容、插入先扩容再插入先插入再扩容扩容后位置计算重新hash原位置或原位置旧容量 (1) 扩容因子…

论文笔记:Evaluating the Performance of Large Language Models on GAOKAO Benchmark

1 论文思路 采用zero-shot prompting的方式,将试题转化为ChatGPT的输入 对于数学题,将公式转化为latex输入 主观题由专业教师打分 2 数据 2010~2022年,一共13年间的全国A卷和全国B卷 3 结论 3.1 不同模型的zeroshot 高考总分 3.2 各科主…

掘根宝典之C++类型别名,关键字typedef,auto,decltype

类型别名 在C中,我们可以使用typedef关键字或using关键字来创建类型别名。下面是两种方式的示例: 使用typedef关键字创建类型别名: typedef int myInt; typedef float myFloat;myInt a;//等价int a; myFloat b;//等价float b; 使用using关…

javase day03笔记

第三天课堂笔记 idea的使用★★★ 创建空工程创建模块创建包:package创建类idea的设置 file -> settings 快捷键 shift + 回车 : 光标切换到下一行psvm回车: main方法main回车:main方法sout回车:输…

Skia最新版CMake编译

运行示例:example/HelloWorld.cpp Skia: 2024年03月08日 master分支: 993a88a663c817fce23d47394b574e19d9991f2f 使用CMake编译 python tools/git-sync-depsbin/gn gen out/config --idejson --json-ide-script../../gn/gn_to_cmake.py此时output目录会生成CM…

微信小程序-分包

分包 1.什么是分包 分包指的是把一个完整的小程序项目,按照需求划分为不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载。 2.分包的好处 对小程序进行分包的好处主要有以下两点: 可以优化小程序首次启动的下载时间…

数据结构入门(3)2.链表接口实现

目录 前言 头文件 动态申请一个结点 单链表打印 单链表尾插 单链表的头插 单链表的尾删 单链表头删 单链表查找 单链表在pos位置之后插入x 单链表删除pos位置之后的值 在pos的前面插入 删除pos位置 销毁顺序表 前言 本文将介绍链表常见的功能的实现 头文件 #…

《互联网的世界》第六讲-去中心化和安全

互联网构建于开放互联的中立原则之上,公平接入,数据互联互通,流量被无差别对待,这意味着互联网本质上是匿名,去中心的,这与我们的现实世界完全不同。 但互联网上的主流业务却是 c/s 产销模式,试…

JAVA实战开源项目:校园失物招领管理系统(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 招领管理模块2.2 寻物管理模块2.3 系统公告模块2.4 感谢留言模块 三、界面展示3.1 登录注册3.2 招领模块3.3 寻物模块3.4 公告模块3.5 感谢留言模块3.6 系统基础模块 四、免责说明 一、摘要 1.1 项目介绍 校园失物招领…

STM32CubeIDE基础学习-STM32CubeIDE软件偏好设置

STM32CubeIDE基础学习-STM32CubeIDE软件偏好设置 文章目录 STM32CubeIDE基础学习-STM32CubeIDE软件偏好设置前言第1章 设置字体颜色第2章 设置字体大小第3章 设置代码区背景颜色总结 前言 编程软件环境最好就设置一个自己喜欢的界面进行显示,这样看起来会比较舒服些…

026—pandas 根据文本数据提取特征

前言 在数据处理中,源数据可能具有一定便于记录但又复杂的结构,我们在后续使用数据时还需要进一步进行处理。在本例中,要根据一列数据提取出数据中的相关特征,我们来看看 pandas 是如何完成的。 需求: 以上数据的 a …