.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
.code
main:
;求字符串长度
;al与edi中数据进行比较
lea edi,str1
lea esi,str1
mov al,0
repne scasb;循环从edi中比较al的值,直到相等退出循环
sub edi,esi;终止位置-起始位置=长度
mov ecx,edi;保存长度
;movsb 字符拷贝
lea edi,str2
lea esi,str1
cld ;清空方向
rep movsb
push offset str2
push offset szFormat
call crt_printf
add esp,8
push offset szPause
call crt_system
add esp,4
ret
end main
end
把str1的“hello world”拷贝到str2里
方法二:
.386
.model flat,stdcall
option casemap:none
include 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 proc
push ebp
mov ebp ,esp;打开栈帧
xor eax,eax
mov edi, [ebp+0ch]
mov ecx,-1
repne

本文详细介绍了如何用x86汇编语言编写strcpy函数,将字符串'hello world'从源地址str1复制到目标地址str2。

1400

被折叠的 条评论
为什么被折叠?



