AHU 汇编 实验三

2024-03-11 22:28
文章标签 实验 汇编 ahu

本文主要是介绍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

这篇关于AHU 汇编 实验三的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799276

相关文章

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

汇编:嵌入式软件架构学习资源

成为嵌入式软件架构设计师需要掌握多方面的知识,包括嵌入式系统、实时操作系统、硬件接口、软件设计模式等。 以下是一些推荐的博客和网站,可以帮助你深入学习嵌入式软件架构设计: ### 1. **Embedded.com**    - **网址**: [Embedded.com](https://www.embedded.com/)    - **简介**: 这是一个专注于嵌入式系统设计的专业网

61.以太网数据回环实验(4)以太网数据收发器发送模块

(1)状态转移图: (2)IP数据包格式: (3)UDP数据包格式: (4)以太网发送模块代码: module udp_tx(input wire gmii_txc ,input wire reset_n ,input wire tx_start_en , //以太网开始发送信

LTspice模拟CCM和DCM模式的BUCK电路实验及参数计算

关于BUCK电路的原理可以参考硬件工程师炼成之路写的《 手撕Buck!Buck公式推导过程》.实验内容是将12V~5V的Buck电路仿真,要求纹波电压小于15mv. CCM和DCM的区别: CCM:在一个开关周期内,电感电流从不会到0. DCM:在开关周期内,电感电流总会到0. CCM模式Buck电路仿真: 在用LTspice模拟CCM电路时,MOS管驱动信号频率为100Khz,负载为10R(可自

HCIA--实验十:路由的递归特性

递归路由的理解 一、实验内容 1.需求/要求: 使用4台路由器,在AR1和AR4上分别配置一个LOOPBACK接口,根据路由的递归特性,写一系列的静态路由实现让1.1.1.1和4.4.4.4的双向通信。 二、实验过程 1.拓扑图: 2.步骤: (下列命令行可以直接复制在ensp) 1.如拓扑图所示,配置各路由器的基本信息: 各接口的ip地址及子网掩码,给AR1和AR4分别配置

GDB 查看汇编

查看汇编 x disassemble

OpenGL/GLUT实践:流体模拟——数值解法求解Navier-Stokes方程模拟二维流体(电子科技大学信软图形与动画Ⅱ实验)

源码见GitHub:A-UESTCer-s-Code 文章目录 1 实现效果2 实现过程2.1 流体模拟实现2.1.1 网格结构2.1.2 数据结构2.1.3 程序结构1) 更新速度场2) 更新密度值 2.1.4 实现效果 2.2 颜色设置2.2.1 颜色绘制2.2.2 颜色交互2.2.3 实现效果 2.3 障碍设置2.3.1 障碍定义2.3.2 障碍边界条件判定2.3.3 障碍实现2.3.