AHU 汇编 实验三

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

二、实验内容:

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

  • 实验过程:

源代码:

data segment

   mess1 db 16,?,16 dup(?),13,10

   mess2 db 16,?,16 dup(?),13,10

   buff1 db 'Please input string1: $'

   buff2 db 'Please input string2: $'

   buff3 db 'NO.$'

data ends

code segment

  assume cs:code,ds:data

start:

  mov ax,data

  mov ds,ax

  mov es,ax        ;let ds and ex link with data segment

  mov dx,offset buff1

  mov ah,9

  int 21h          ;output buff1

  lea dx,mess1

  mov ah,0ah

  int 21h

  mov dl,13

  mov ah,2

  int 21h

  mov dl,10

  mov ah,2

  int 21h          ;input mess1 and operate enter for next input

  mov dx,offset buff2

  mov ah,9

  int 21h          ;output buff2

  lea dx,mess2

  mov ah,0ah

  int 21h

  mov dl,13

  mov ah,2

  int 21h

  mov dl,10

  mov ah,2

  int 21h          ;input mess2 and operate enter

  mov cx,0         ;clear cx

  mov cl,mess2+1   ;assign cl as mess1+1 which is point to real string size

  lea si,mess1+2   ;pass mess1 string effective address to di

  lea di,mess2+2   ;pass mess2 string effective address to si

  scan:

  cld              ;set direction

  repe cmpsb       ;compare mess1 and mess2, when cx=0 or zf=0 exit

  jnz output       ;ZF=0 jump to output

  jmp exit

  output:

  mov dx,offset buff3

  mov ah,9

  int 21h          ;output buff3

  xor ax,ax        ;clear ax

  mov al,mess2+1   ;assign al with mess2 real length

  sub al,cl        ;label the location of different character

  add al,'0'

  mov dl,al        ;ASCII code

  mov ah,2

  int 21h

  mov dl,':'

  mov ah,2

  int 21h          ;output NO.x:

  mov dl, byte ptr ds:[si-1]

  mov ah,2

  int 21h          ;output mess1 original character

  mov dl,'-'

  mov ah,2

  int 21h          ;output '-'

  mov dl, byte ptr es:[di-1]  ;assign dl with different character which is the front di point to

  mov ah,2

  int 21h          ;output different character

  mov dl,13

  mov ah,2

  int 21h

  mov dl,10

  mov ah,2

  int 21h         ;operate enter

  jcxz exit       ;when cx=0 jump to exit

  jmp scan        ;when cx!=0, go on scanning next character

  exit:

  mov ah,4ch

  int 21h

code ends

end start

运行截图:

  • 实验小结:

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

连接端口和连接端口转换OrCAD补丁

来介绍此功能之前先复习一下一些OrCAD的基础知识。 说到连通两个器件,有什么办法呢?最直接的就是用线连通。比如下面这两个器件需要连通,我们可以直接用线Place wire连接。 但是如果这两个器件由于某些原因,他们之间相隔很远&…

STM32CubeMX 配置 STM32F103 工程:通过DAC输出正弦波

说明:STM32CubeMX 配置 STM32F103 工程,通过DAC输出正弦波,参考代码可自动计算频率,自动计算正弦数据。 先参考这篇文章配置时钟、工程输出的设置: STM32CubeMX 配置 STM32F103 工程:通过DAC生成三角波、…

【C++】排序算法

一、排序算法概述 在C语言中&#xff0c;通常需要手写排序算法实现对数组或链表的排序&#xff0c;但是在C中&#xff0c;标准库中的<algorithm>头文件中已经实现了基于快排的不稳定排序算法 std::sort() &#xff0c;以及稳定的排序算法 std::stable_sort() 。 排序算…

c# combox 行间距调整

初始化combox comboBox1.DropDownStyle ComboBoxStyle.DropDownList;comboBox1.ItemHeight 25; // 设置 combox 的行高comboBox1.DrawMode DrawMode.OwnerDrawVariable; 添加 DrawItem 事件 private void comboBox1_DrawItem(object sender, DrawItemEventArgs e){if (…

鸿蒙Harmony应用开发—ArkTS声明式开发(模态转场设置:全屏模态转场)

通过bindContentCover属性为组件绑定全屏模态页面&#xff0c;在组件插入和删除时可通过设置转场参数ModalTransition显示过渡动效。 说明&#xff1a; 从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 不支持横竖屏切换。…

docker安装各种组件

一 docker基本命令 镜像操作 ① 列举镜像 docker images ② 搜索镜像&#xff08;以jdk为例&#xff09; docker search jdk ③ 下载镜像 docker pull java ④ 查看所有镜像 docker images ⑤ 启动镜像&#xff08;以jdk8为例&#xff09; docker run -it --name jdk…

AI会砸了我们的饭碗?

Sora&#xff0c;由OpenAI推出&#xff0c;是一款创新的文本到视频生成模型。它能够将文本描述转化为引人入胜的高清视频片段。采用了扩散模型和变换器架构&#xff0c;Sora实现了高效的训练。其方法包括统一表示法、基于补丁的表示法、视频压缩网络和扩散变换器。 Sora具备多种…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:CalendarPicker)

日历选择器组件&#xff0c;提供下拉日历弹窗&#xff0c;可以让用户选择日期。 说明&#xff1a; 该组件从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 CalendarPicker(options?: CalendarOptions) …

conda安装playwright

进入conda安装目录激活环境 D:\Anacoda3>conda activate base 安装playwright &#xff08;base&#xff09;D:\Anacoda3>pip3 install playwright -i https://pypi.tuna.tsinghua.edu.cn/simple &#xff08;base&#xff09;D:\Anacoda3>python -m playwright insta…

深入理解React中的useState:函数组件状态管理的利器

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

transformer参数推导

一、目录 1.Bert Embedding 参数量计算 2.多头自注意力self_attention 参数计算: d_model* d_model 3*(d_model* d_qkvnum_heads) 3. 全连接层参数量 4.layerNormer 参数量 2hidden 5. 编码器 解码器参数 6. 语言模型head 参数&#xff1a;hidden* vocab 二、实现 参考&…

仿生蝴蝶制作——蝴蝶翅膀制作

前言 上一次已经设计好了的翅膀图纸 接下来就是根据这个图纸来制作翅膀。 过程中其实可以不用尺子准确测量&#xff0c;直接用碳纤维棒比着剪下来就好了&#xff0c;然后把减下来的一截比着剪下另一只翅膀需要的材料。因为左右两只翅膀差别不能太大&#xff0c;所以这样是最好…

【Java设计模式】十四、策略模式

文章目录 1、策略模式2、案例&#xff1a;促销策略3、总结4、在源码中的实际应用 1、策略模式 从A地到B地&#xff0c;出行方式可选汽车、火车、飞机中的一种 日常开发&#xff0c;开发工具可IDEA&#xff0c;可Eclipse 不管你选飞机还是火车&#xff0c;你最终都可以实现从A地…

SpringBoot注解--08--注解@JsonInclude

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 JsonInclude注解是jackSon中最常用的注解之一&#xff0c;是为实体类在接口序列化返回值时增加规则的注解 1.JsonInclude用法2.JsonInclude注解中的规则有 案例需求…

vue自定义主题皮肤方案

方案一&#xff1a;CSS变量换肤&#xff08;推荐&#xff09; 利用css定义变量的方法&#xff0c;用var在全局定义颜色变量&#xff08;需将变量提升到全局即伪类选择器 :root&#xff09;然后利用js操作css变量&#xff0c;document.getElementsByTagName(‘body’)[0].style…

网络套接字1

网络套接字1 &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容讲解了udp的Linux环境下的使用&#xff0c…

鼠标在QTreeView、QTableView、QTableWidget项上移动,背景色改变

目录 1. 前言 2. 需求 3. 功能实现 3.1. 代码实现 3.2. 功能讲解 4. 附录 1. 前言 本博文用到了Qt的model/view framework框架,如果对Qt的“模型/视图/委托”框架不懂&#xff0c;本博文很难读懂。如果不懂这方面的知识&#xff0c;请在Qt Assistant 中输入Model/View…

一款适合程序员开发复杂系统的通用平台——JNPF 开发平台

在过去&#xff0c;很多开发工具更侧重代码编辑&#xff0c;针对数据库增删改查&#xff08;CRUD&#xff09;类的 Web 系统开发&#xff0c;在界面设计、前后端数据交互等环节主要还是靠写代码&#xff0c;效率比较低。目前很多所谓的低代码开发平台&#xff0c;大多数也都是基…

SQLServer数据库系列之:查询SQLServer数据库上面的连接信息、session信息、sql语句

SQLServer数据库系列之:查询SQLServer数据库上面的连接信息、session信息、sql语句 一、查询数据库上的连接信息二、查询SQLServer数据库的session信息SQLServer数据库从入门到精通系列文章之:SQLServer数据库百篇技术文章汇总 数据库专栏系列文章阅读传送门:详细整理汇总M…

超越 Siri 和 Alexa:探索LLM(大型语言模型)的世界

揭秘LLM&#xff1a;语言模型新革命&#xff0c;智能交互的未来趋势 近年来&#xff0c;虚拟助手的世界发生了重大转变。 虽然 Siri 和 Alexa 本身就是革命性的&#xff0c;但一种称为大型语言模型 (LLM) 的新型人工智能正在将虚拟助手的概念提升到一个全新的水平。 在这篇博文…
最新文章