.386
.model flat,stdcall;平坦模式,stdcall
option casemap:none;大小写不敏感include msvcrt.inc;包含msvcrt.inc
includelib msvcrt.lib;包含msvcrt.lib.data
szPause db "pause",0
szFormat db "%s",0
str1 db "hello world",0
str2 db 20 dup(0),0.codemain:;求字符串长度;al与edi中数据进行比较lea edi,str1lea esi,str1mov al,0repne scasb;循环从edi中比较al的值,直到相等退出循环sub edi,esi;终止位置-起始位置=长度mov ecx,edi;保存长度;movsb 字符拷贝lea edi,str2lea esi,str1cld ;清空方向rep movsbpush offset str2push offset szFormatcall crt_printfadd esp,8push offset szPausecall crt_systemadd esp,4ret
end main
end

把str1的“hello world”拷贝到str2里

方法二:

.386
.model flat,stdcall
option casemap:noneinclude msvcrt.inc
includelib msvcrt.lib;system("pause").data
szPause db "pause",0
szFormat db "%s",0
str1 db "hello world",0
str2 db 20 dup(0),0.code
mstrcpy procpush ebpmov ebp ,esp;打开栈帧xor eax,eaxmov edi, [ebp+0ch] mov ecx,-1repne scasbnot ecx;ecx保存数组长度mov esi,dword ptr[ebp+0Ch]mov edi,dword ptr[ebp+08h]rep movsbmov esp,ebppop ebpret 8mstrcpy endpmain:push offset str1push offset str2call mstrcpypush offset str2push offset szFormatcall crt_printfadd esp,8push offset szPausecall crt_systemadd esp,4ret
end main
end

x86汇编实现strcpy相关推荐

  1. 寄存器理解 及 X86汇编入门

    本文整理自多材料源,感谢原址分享,请查看末尾Url I, 汇编语言分类: 汇编语言和CPU息息相关,但是不能把汇编语言完全等同于CPU的机器指令.不同架构的CPU指令并不相同,如x86,powerpc ...

  2. 在VS2015中编写x86汇编

     参考教程: 作者:上下求索 VS2015,C嵌套汇编 & C,汇编相互调用 http://ylqhust.github.io/blog/2016/04/17/vs-clanguage-asm ...

  3. 【Android 逆向】x86 汇编 ( align | db | dw | dd | nop | 伪指令 )

    文章目录 一.align 字节对齐指令 二.db / dw / dd 指令 三.nop 指令 总结 一.align 字节对齐指令 align 字节对齐 ; 默认情况下是 161616 字节对齐 ; 该 ...

  4. x86汇编指令集大全

    一.数据传输指令 1. 通用数据传送指令 MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX ...

  5. 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)

    From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...

  6. 【汇编优化】之X86汇编优化

    入门序  本文主要讲解x86汇编的内容,涉及的东西比较多,篇幅比较有限,但部分详尽的内容给出了具体的参考网址:本文主要讲了x86_32.windows64以及Linux64下纯汇编的编写. 英文版:h ...

  7. X86汇编常见的寄存器

    X86汇编常见的寄存器 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和GS) ...

  8. 编译原理—x86汇编指令

    eax, ebx, ecx, edx, esi, edi, ebp, esp寄存器 eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄 ...

  9. X86汇编学习小结----cmp 完整版本

    生成汇编代码 比如,一个简单的函数: // hello.c void func(){} 如何得到相应的汇编代码呢? gcc -S hello.c hello.s clang -S hello.c he ...

最新文章

  1. C语言——第0次作业(二)
  2. php协议任意文件读取
  3. HDU4302(map的用法)
  4. [css] 解释下css3的flexbox(弹性盒布局模型),以及它应用场景有哪些?
  5. python easy install 编译_python安装easy_install和pip
  6. android获取指针空间大小_Android进阶:Binder那么弱怎么面大厂?
  7. VB UTF-8 URL编码函数
  8. 大规模中文自然语言处理语料(百科,问答、新闻,翻译)
  9. malloc 初始化_glibc: malloc、calloc、realloc amp; free
  10. 基于随机森林的姿态识别算法
  11. 软件开发之文档的重要性
  12. PS 渐变工具使用
  13. 计算机硬盘与格式化,什么是磁盘格式化 格式化与快速格式化区别 - 驱动管家...
  14. 前端学习 -- HtmlCss -- 背景
  15. 李沐论文讲解笔记 之 Transformer
  16. 常用的几种数据库介绍
  17. 2021/8/12 网络机顶盒
  18. php7.3 7.4,PHP 7.4 早期性能基准测试:与 7.3 差不多
  19. 翻译: Deep Convolutional Neural Networks for Breast Cancer Histology Image Analysis
  20. 上海亚商投顾:沪指收跌0.62% 东数西算板块逆势领涨

热门文章

  1. w7旗舰版的计算机管理,win7旗舰版系统家长控制电脑方法。
  2. Linux 重启 PHP-FPM 命令
  3. Python 新手常犯错误
  4. 注册表实用技能【持续更新】
  5. Ubuntu14.04 Y460闪屏问题解决方案
  6. Bug生命周期:遗留bug管理
  7. Json转String,String转Json
  8. 微信小程序---常用的指令/组件
  9. (五)Selenium自动化测试实战—PO模式
  10. 【github】Git LFS上传大文件到github