首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制字符串过程程序集

复制字符串过程程序集
EN

Stack Overflow用户
提问于 2016-12-25 22:05:11
回答 1查看 7K关注 0票数 0

我用masm32编写了一个复制字符串过程

代码语言:javascript
复制
coppystring proc uses esi edi  ecx source:dword,dest:dword
                        mov  esi, OFFSET source
                        mov  edi, OFFSET dest
                        mov  ecx, SIZEOF source
                    Lx:
                        mov  al,[esi]          
                        mov  [edi],al           
                        inc  esi              
                        inc  edi
                        loop Lx

coppystring endp

这段代码给了我错误

用于偏移量的A2098无效操作数

偏移运算符后面的表达式必须是内存表达式或立即表达式。但我还是不知道怎么修正我的程序

EN

回答 1

Stack Overflow用户

发布于 2016-12-31 19:44:08

您得到这些错误是因为在编译时不知道sourcedest的内存地址。你需要把地址传递给牧师。此外,正如注释所指出的,您不能使用SIZEOF,应该检查空终止符,或者以另一种方式获取长度。

代码语言:javascript
复制
invoke coppystring,offset str1,offset str2 ; Push the offsets here

coppystring proc uses esi edi source:dword,dest:dword
    ; Generally only need to preserve esi, edi and ebx

mov  esi, source
mov  edi, dest

Lx:
    mov  al,[esi]          
    mov  [edi],al           
    inc  esi              
    inc  edi
    cmp byte ptr [esi],0   ; Check for null terminator
    jne Lx                 ; loop if not null

ret
coppystring endp
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41324841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档