复制字符串程序集

时间:2016-12-25 22:05:12

标签: string assembly x86 masm32

我在masm32中写了一个复制字符串程序

jQuery('#bottom-play-button-container').click(function (e) {
    e.preventDefault();
    jQuery(this).find('i').toggleClass('ion-ios-play').toggleClass('ion-pause');
    jQuery('#play-pause-toggle').find('i').toggleClass('ion-ios-play').toggleClass('ion-pause');

    jQuery('.media-circle').find('i').toggleClass('ion-ios-play');
    jQuery('.feed-pause').toggle();

});

此代码给出了错误

  

AOF98 OFFSET的无效操作数

OFFSET运算符后面的表达式必须是内存表达式或立即表达式。 但我仍然不知道如何修复我的proc

1 个答案:

答案 0 :(得分:1)

您收到这些错误是因为sourcedest的内存地址在编译时是未知的。您需要将地址传递给proc。另外,如评论所示,您不能使用SIZEOF并且应该检查空终止符或以另一种方式获取长度。

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