您能看到我无与伦比的块嵌套在哪里错误吗?我似乎看不到它? MASM

问题描述 投票:0回答:1

是新组装的。使用C ++和MASM来打印增量值的副本的工作对我来说很好。我收到此错误:

..\..\..\..\Downloads\MASM\project.asm(24): error A2005: symbol redefinition : Store1>..\..\..\..\Downloads\MASM\project.asm(32): fatal error A1010: unmatched block nesting : Store


CONSOLE     equ     -11
KEYBOARD    equ     -10

extrn   Store:          PROC
extrn   increment:      PROC
extrn   Show:           PROC
extrn   ExitProcess:    PROC    

.data
.data?
c1      byte    ?   ;pass in usual reg  /byte=8-bit char                    char
s1      word    ?   ;pass in usual reg  /word=16-bit short                  short
us1     word    ?   ;pass in usual reg  /word=16-bit short                  unsigned short
i1      dword   ?   ;pass in usual reg  /dword=32-bit int or long int       int
ull1    qword   ?   ;offset 48,56,64    /qword=64-bit long long int         unsigned long long int
ll1     qword   ?   ;offset 48,56,64    /qword=64-bit long long int         long long int
uc1     byte    ?   ;offset 48,56,64    /byte=8-bit char                    unsigned char

.code

Store       PROC
         mov    rcx, c1             ;store param1
         mov    rdx, s1             ;store param2
         mov    r8, us1             ;store param3
         mov    r9, i1              ;store param4
         mov    r10, ull1           ;store param5
         mov    r11, ll1            ;store param6
         mov    r12, uc1            ;store param7
Store       ENDP

Increment   PROC
         inc    c1                  ;increment param1
         inc    s1                  ;increment param2
         inc    us1                 ;increment param3
         inc    i1                  ;increment param4
         inc    ull1                ;increment param5
         inc    ll1                 ;increment param6
         inc    uc1                 ;increment param7
Increment   ENDP

Show        PROC
       Display
Show        ENDP

Display:
    mov      c1, rcx            ;
    mov      s1, rdx            ;
    mov      us1, r8            ;
    mov      i1, r9         ;
    mov      ull1, r10          ;
    mov      ll1, r11           ;
    mov      uc1, r12           ;
    pop      rcx                ;
    pop      rdx                ;
    pop      r8                 ;
    pop      r9                 ;
    pop      r10                ;
    pop      r11                ;
    pop      r12                ;


如果它就在我的面前,请告诉我-我感觉自己像个傻瓜。编辑:对于所有代码-网站告诉我我的帖子代码太多,因此我认为它只是我代码的一部分。我错了。

c++ windows assembly intel masm
1个回答
1
投票

[您要将StoreIncrementShow定义为extrn,因此您以后不能在此处定义它们-已经定义,因为它们来自外部来源!

删除那些extrn定义。 (由于[[actual来自外部来源,因此仅需保留ExitProcess。)

“ unmatched”部分可能只是先前错误的结果,并且由于该错误而忽略了Store PROC行,这将使Store ENDP不匹配。因此,一旦解决了extrn问题,该错误也将消失。

© www.soinside.com 2019 - 2024. All rights reserved.