`
yunchow
  • 浏览: 324477 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

汇编语言实现字符串的拷贝

阅读更多
   今天写了一个小程序,实现了把字符串从存储器的一个单元拷贝到存储器的另一个单元,程序中主要用到了字符串操作指令MOVSB,这个指令比较特殊可以对两个存储单元直接操作,用SI指向源字符串地址,DI指向符加段的目地字符串地址,用这条指令就可以很轻松的将字符串进行拷贝,如果你想循环操作,很简单,在指令前面加上REP伪指令便可实现指定次数的循环,但是要求你把你想要循环的次数送到CX,这样就可以复制字符串了.示例代码如下:
  
   DATAS SEGMENT
    BUF1 DB 'HELLO,WORLD!$'
    COUNT EQU $-BUF1
    BUF2 DB COUNT DUP(?) 
    MSG DB 'COPY COMPLETED!$'
    MSGB DB 'COPY A STRING',13,10
    	 DB 'PRESS ANY KEY TO START...'
    	 DB 13,10,'$'
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,ES:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV ES,AX

    
    MOV AH,9
    MOV DX,OFFSET MSGB
    INT 21H
    MOV AH,1
    INT 21H
    
	CALL COPY ;CALL COPY PROC
	
    MOV AH,9
    MOV DX,OFFSET MSG
    INT 21H 
    MOV AH,1
    INT 21H   
    MOV AH,4CH
    INT 21H
    ;---------------------
    ;PROC NAMD : COPY
    ;FEATURE : COPY A STRING FORM ONE PLACE TO ANOTHER
    ;INPUT PARAMTER : BUF1,BUF2,COUNT
    ;OUTPUT PARAMETER : NONE
    COPY PROC

    MOV SI,OFFSET BUF1
    MOV DI,OFFSET BUF2
    MOV CX,COUNT
    CLD    
    REP MOVSB  
    RET
    COPY ENDP 
       
CODES ENDS
    END START

   
分享到:
评论

相关推荐

    在C语言函数中调用汇编语言程序实现字符串的拷贝

    下面是一个简单的示例,展示了如何在ARM汇编中实现字符串拷贝: ```assembly ; 假设我们有一个名为str_copy的汇编函数 str_copy: ; 设置LR(链接寄存器)保存返回地址 PUSH {LR} ; 加载源字符串的地址到R0 ...

    汇编操作字符串

    本话题将详细讲解如何使用汇编语言操作字符串,特别是实现字符串拷贝、求字符串大小以及字符串比较,这些功能在C语言中对应的库函数分别是`memcpy`、`strcpy`、`strcmp`和`strlen`。 首先,我们要理解汇编中的基本...

    汇编字符串处理

    本文将深入探讨汇编语言中字符串处理的关键知识点,基于给定的文件信息:“汇编字符串处理”。 #### 一、基础知识与寄存器作用 在汇编语言中,字符串处理通常依赖于特定的寄存器来存储和操作数据。主要使用的...

    汇编 字符串复制

    汇编 字符串复制 非串指令,所复制的字符串需要在代码中改动,只可查看内存

    汇编语言设计通讯录

    在汇编语言中,我们可能需要使用循环和字符串处理指令。 `add`功能则是在现有联系人基础上增加新的信息,可能需要更新已有的数据结构。这涉及对已有数据的查找和修改,以及处理边界条件。 `delete`功能则需找到...

    汇编语言存储器访问实验五

    在编程实现安全的串拷贝功能中,我们需要使用汇编语言的LOOP指令来实现串拷贝的安全性。例如,假设我们要将一个字符串从源串安全地拷贝到目的串,我们可以使用以下汇编语言代码: MOV SI, OFFSET STR1 MOV DI, ...

    7个自己编写的ARM小程序

    用汇编语言实现字符串的反序存储连接。用调用函数的思想实现字符串的切割和反序存储。运用混合编程实现数串的相加存储。运用混合编程实现数串的反序存储和连接。运用混合编程和函数调用实现数串的切割和连接。几个小...

    C语言与汇编语言混合编程

    * 实现初始化程序、字符串拷贝功能和冒泡法排序 实验结果包括: * 实现了 ARM 嵌入式 C 语言编程的基本方法 * 实现了嵌入式汇编编程规则和方法 * 实现了汇编语言程序和 C 语言程序之间的相互调用规则和编程方法 ...

    微嵌实验1_实验报告.pdf

    3. 实现字符串拷贝功能,使用 C 调用汇编实现字符串拷贝,了解如何补充完成源代码中缺失的部分、实现字符串拷贝功能。 4. 实现求和运算功能,使用汇编调用 C 实现实现求和 1+2+…+N,了解如何补充完成源代码中缺失的...

    电子科技大学微嵌实验.doc

    * 实验 1.3:C 调用汇编实现字符串拷贝功能核心代码分析,了解 C 语言和汇编语言的混合编程技术。 * 实验 1.4:汇编调用 C 实现求和 1+2+...+10 核心代码分析,了解汇编语言和 C 语言的交互使用方法。 * 实验 1.5:...

    将字符串str1复制为字符串str2的三种解决方法

    我们可以编写一个名为`Strcpy`的函数,通过遍历字符数组来实现字符串复制。下面的代码展示了如何手动实现这个功能: ```cpp #include using namespace std; void Strcpy(char *p2, char *p1) { int i = 0; for ...

    C语言与汇编语言混合编程_32位嵌入式.pdf

    此外,通过汇编语言编写子程序实现字符串拷贝和冒泡排序功能,再在C语言环境中调用这些子程序,完成实际操作。 以字符串拷贝为例,汇编子程序str_cpy通过LDR和STR指令读写内存,实现字符的逐个移动,而CMP和BNE指令...

    汇编程序调试实验报告.doc

    学生需要掌握如何使用MOV指令来传递字符串,并了解如何使用LOOP指令来实现字符串拷贝。 (三) 实例三 在这个实例中,学生需要编写一个汇编语言程序,以实现一个简单的游戏程序。学生需要掌握如何使用汇编语言来实现...

    自己开发的Ollydbg复制字符串小插件

    1:Ollydbg中可以查看内存的字符串,但是不好直接复制出来。这里的插件通过右键菜单可以直接把字会串复制到内存中(1.1和2.01版本都有支持)。 2:Ollydbg1.1版本不能直接复制汇编窗口的地址,插件中可以右键复制...

    chapter4ARM7TDMI汇编语言程序设计PPT学习教案.pptx

    - 示例程序展示了如何在ARM体系下进行字符串拷贝操作,使用了`AREA`指令声明代码段,`ENTRY`标识程序入口,`LDR`、`STR`等指令进行数据加载和存储,`SUBS`和`BNE`进行条件判断和循环控制。 3. **汇编语言程序设计...

    存储器访问实验.docx

    3. 源串和目的串的位置关系:在字符串拷贝过程中,源串和目的串的位置关系非常重要。如果源串和目的串有重叠的情况,我们需要考虑不同的拷贝方向,以确保数据在拷贝过程中不丢失。 4. 段寄存器和偏移地址:在计算机...

    chapter4ARM7TDMI汇编语言程序设计PPT教学课件.pptx

    以下是一个简单的ARM汇编程序,实现了字符串拷贝的功能: ```assembly AREA Example1, CODE, READONLY num EQU 20 ; 设置拷贝字的个数 ENTRY CODE32 START LDR R0, =src ; R0 指向源数据块 LDR R1, =dst ; R1 指向...

    汇编替换程序

    - 在不同的编程语言中,字符串复制有不同的实现方式,但基本原理相同,即逐个字符地拷贝。 3. **寄存器的作用**: - 寄存器是CPU内部的小型存储单元,用于暂存数据或指令地址。 - 不同的寄存器有各自特定的功能...

    汇编语言课程\清华大学课件\编程实例

    清华大学的这个汇编语言课程通过三个不同的编程实例,展示了如何利用不同寻址方式来实现相同的功能:将一个字符串中的字符依次复制到另一个位置。以下是这三个实例的详细分析: 1. **寄存器间接寻址方法**: 在...

    华科汇编第一次上机

    华科汇编第一次上机考试旨在评估学生对汇编语言程序设计的理解和应用能力,涵盖了汇编语言程序设计的多个方面,包括汇编源程序的编辑、汇编、连接和调试、程序调试工具的使用、字符串操作和比较、数字串到英文单词串...

Global site tag (gtag.js) - Google Analytics