【汇编程序】试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NO MATCH”

2023-11-17

STACKS   SEGMENT  STACK
         DW     100H DUP(?) 
         TOP    LABEL WORD
         STACKS ENDS

DATAS    SEGMENT
STRING1  DB 'abcd123$'
STRING2  DB 'abcd133$'     --定义两个不同的字符串

LEN1     EQU $-STRING1
LEN2     EQU $-STRING2     --获得字符串的长度

MATCH    DB 'MATCH!$'
NOMATCH  DB 'NO MATCH!$'   --定义MATCH和NOMATCH信息
         DATAS ENDS



CODES SEGMENT
    ASSUME CS:CODE,DS:DATA,SS:STACKS
    MAIN   PROC FAR 
	
    MOV AX,STACKS
    MOV SS,AX
    LEA SP,TOP
    MOV AX,DATAS
    MOV DS,AX
    MOV ES,AX     --将存放在数据段中的原串首地址放入DS和ES中

    MOV AH,LEN1   
    MOV AL,LEN2   --将两个字符串的长度放入AH\AL中

    CMP AL,AH     --比较两个寄存器的值,如果不相同则输出‘NOMATCH’
    JNE NO

    MOV CH,0
    MOV CL,AL     --将AL中的值存入cx中,作为计数器

    LEA SI,STRING1
    LEA DI,STRING2 -串地址放入SI\DI
    CLD           --使得DF=0,使得地址自动增量
    REPE CMPSB    --串比较指令
    JNE NO        --如果不相等就输出‘NOMATCH’

YES:
    LEA DX,MATCH
    MOV AH,09H
    INT 21H 
    JMP EXIT      --如果以上都相等则输出‘NOMATCH’,跳转到退出
NO: LEA DX,NOMATCH
    MOV AH,09H
    INT 21H 

EXIT: 
    MOV AH,4CH
    INT 21H

 MAIN   ENDP
 CODES  ENDS
  END   MAIN

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【汇编程序】试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NO MATCH” 的相关文章

  • 阿尔法点亮LED灯(一)汇编语言

    文章目录 前言一 GPIO介绍1 MX6U IO 复用2 MX6U IO 配置3 GPIO 配置4 GPIO 时钟使能5 61 61 GPIO的使用步骤 61 61 二 程序编写1 使能 GPIO1 时钟2 设置 GPIO1 IO03 的复
  • 汇编语言,数据段中,标号前面加不加offset有什么区别?

    data segment string db 40h dup 0 string 1 db 39 Input characters 39 0dh 39 39 data ends 那么 xff0c mov bx string 和 mov bx
  • 汇编语言

    基础知识 1 1机器语言 计算机的机器指令是一列二进制数字 计算机将之为转变为一列高低电平 xff0c 以使计算机的电子器件受到驱动 xff0c 进行运算 1 2 汇编语言的产生 程序员 汇编指令 编译器 机器码 计算机 1 3 汇编语言的
  • ARM汇编语言 - 简介 [一]

    origin https zhuanlan zhihu com p 82490125 ARM汇编语言 简介 一 兰新宇 talk is cheap 说明 xff1a 本系列文章将主要以ARMv7和ARMv8架构为例 xff0c 介绍ARM汇
  • ARM汇编语言 - 简介 [三]

    上文介绍了ARM的数据处理指令 xff0c 本文将主要介绍ARM中的跳转指令 跳转指令 无条件跳转 ARM中的基础跳转指令就一个字母 34 B 34 xff0c 代表Branch xff0c 相比起x86中和它功能基本相同的 34 jmp
  • 汇编视角分析C++虚函数实现原理

    1 概述 虚函数是c 语言非常重要的机制 日常的c 编程工作中经常使用虚函数 通过汇编视角来探究虚函数的实现原理 有助于深刻理解虚函数的内部机制 尤其要说明的是 c 语法规范并没有规定虚函数的具体实现方案 不同的编译器实现方式可以不同 本文
  • 学习汇编语言MASM笔记1

    关于源程序书写格式 太基础的略去 只记录一些我还不熟悉的内容 参考https wenku baidu com view 7ca70e0ef342336c1eb91a37f111f18582d00c5d html 其他网页的参考以挂上相关连接
  • 简单的debug32的基本语法介绍(基于dos环境)

    1 打开文件 debug 文件名 exe 2 r 简单的输入 r时就是查看当前各项寄存器的值 并由当前的地址 存储的指令等等 并且 我们可以用 r命令来对寄存器的值进行修改 如 r ax 3 a a指令可以让我们依次对内存单元直接写入汇编语
  • linux0.00 代码阅读笔记

    汇编语言的编写 编译 运行 调试 author hjjdebug date 参考代码地址 GitHub hjjdebug linux0 00 linux0 00 code compiled under ubuntu14 04 gcc 4 8
  • ret和call的原理

    1 ret 指令用栈中的数据 修改IP的内容 从而实现近转移 CPU执行ret指令时 进行下面两步操作 1 IP ss 16 sp 使用栈顶元素修改IP实现跳转 2 sp sp 2 2 retf 用栈中的数据 修改CS和IP的内容 从而实现
  • [从零学习汇编语言] - 模块化程序设计

    文章目录 前言 回顾 一 模块化程序设计 1 1 子程序 1 2 子程序的参数和返回值 1 3 批量数据的传递 1 4 寄存器的冲突处理 结语 前言 点赞再看 养成习惯 回顾 还记得我们之前讲过的ret指令搭配call指令实现的子程序模板吗
  • 如何在MacOS上玩儿汇编?

    在Mac上写汇编还是相当方便的 本文通过写一个Helloworld程序来入门 首先 MacOS 自带nasm 只是版本有点老 编译不了64位程序 只要上官网下一个最新的 替换一下就行了 有一点需要注意的是mac上gcc编译 o文件的默认入口
  • 汇编语言中各种寄存器的总结

    汇编语言中各种寄存器的总结 1 通用寄存器 数据寄存器 AX BX CX DX 指针寄存器 SP BP 变址寄存器 SI DI 2 控制寄存器 IP FLAG 3 段寄存器 CS 代码段寄存器 基本概念解释 start作用 DS 数据段寄存
  • 栈破坏下crash的分析方法

    在众多的coredump中 有一类crash调试起来是最麻烦的 那就是 栈被破坏 导致的函数调用回溯结构破坏引发的coredump 本文 主要讲讲这一类crash的成因 原理以及调试方法 1 SMTC show me the code 首先
  • 汇编语言——串操作指令

    若要处理连续内存单元中的一批数据 通常需要借助于循环 80x86CPU提供了一组串操作指令 可用来处理内存中的数据 字节 字 双字 串 这些指令包括MOVS LODS STOS SCAS CMPS 为了指出操作对象的长度 在助记符后加上B
  • VMware Workstation 不可恢复错误: (vcpu-0) vcpu-0:VERIFY vmcore/vmm/main/cpuid.c:376 bugNr=1036521

    这个问题的原因有几个 第一个原因就是网上说的要开启BIOS的Interl virtual technology 而我当时开启了之后依然报错 最后找到问题的原因在VMWare Workstation 右键我们的虚拟机 选择最下面的设置 然后注
  • [bx]和loop指令

    1 bx 的含义 bx 表示一个内存单元 它的偏移地址在bx中 比如 mov ax bx 会将一个内存单元的内容送入ax 这个内存单元的长度是2个字节 存放一个字 偏移地址存放在bx中 段地址在ds中 mov al bx 则是移动半个字 2
  • 汇编语言编程,将DATAS段中的每个单词的前4个字母改为大写并将改写后的结果分4行输出到屏幕上

    编程 将DATAS段中的每个单词的前4个字母改为大写并将改写后的结果分4行输出到屏幕上 题目 编程 将DATAS段中的每个单词的前4个字母改为大写并将改写后的结果分4行输出到屏幕上 DATAS SEGMENT db 1 display db
  • win32汇编语言实现冒泡排序

    1 背景 现在大多数的大规模程序并不是由汇编语言来编写 原因很简单 因为太耗时了 但是汇编语言仍然被广泛运用在配置硬件设备以及优化程序的执行速度和尺寸大小等方面 特别是在逆向工程方面 更需要深入理解与熟练掌握汇编语言 针对现阶段 看汇编基本
  • 汇编语言有如下的汇编程序段,请完成code段中的代码,实现将string1段和string2段中的数据拷贝到string3段中,并且将string3段中的数据输出到屏幕。

    有如下的汇编程序段 请完成code段中的代码 实现将string1段和string2段中的数据拷贝到string3段中 并且将string3段中的数据输出到屏幕 题目 有如下的汇编程序段 请完成code段中的代码 实现将string1段和s

随机推荐