News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

What does the error mean?

Started by leetow2003, December 29, 2010, 12:39:31 PM

Previous topic - Next topic

leetow2003

I compile my 80386 codes,but it displays many errors:
error A2015:Symbol already different kind: @CURSEG
my codes have not  the Symbol @CURSEG,
I want to know What the error means?
And how to correct it?
which file explains these errors and solve it?
I use compiler  masm5.1(it includes masm.exe,link.exe,lib.exe,cref.exe),
Thanks.

Gunther

You should provide the code here, so we can inspect it.

Gunther
Forgive your enemies, but never forget their names.

sinsi

Don't use masm 5.1, there was a big change between versions 5 and 6.
Light travels faster than sound, that's why some people seem bright until you hear them.

dedndave

suddenly, i don't feel so old - lol
nice to know someone else has 5.1   :P

if you install the masm32 package, it comes with 6.14
there are several newer versions of masm that may be acquired in different ways
no matter which version you wind up with, you will probably want the masm32 package  :U

FORTRANS

Hi,

   As sinsi says, many programs that assemble with MASM 5.1
or earlier will have errors with MASM 6.0 or later.  And of course
as the later versions of MASM added features, many programs
written for MASM 6+ won't work with older versions of MASM.
And segment usage is a feature that changed some defaults
between versions.

   If you install MASM32 you will need to use LINK16 for DOS
programs.

HTH,

Steve N.

dedndave

yes - now, that you mention it...
i recall seeing some OPTION directives in the masm 6 manual for assembling older programs

MichaelW

eschew obfuscation

leetow2003

Quote from: Gunther on December 29, 2010, 01:12:06 PM
You should provide the code here, so we can inspect it.

Gunther

The lines of two files  are more than 300,and the code description is not written by english,so I delete these description,look:


;FileName:386SCD.ASM

DESCRIPTOR      STRUC
        LIMITL          DW      0     
        BASEL           DW      0     
        BASEM           DB      0       
        ATTRIBUTES      DW      0     
        BASEH           DB      0     
DESCRIPTOR      ENDS
;-------------------------------------------------------
GATE    STRUC                           
        OFFSETL         DW      0     
        SELECTOR        DW      0       
        DCOUNT          DB      0     
        GTYPE           DB      0       
        OFFSETH         DW      0     
GATE    ENDS
;--------------------------------------------------------
PDESC   STRUC
        LIMIT   DW      0     
        BASE    DD      0     
PDESC ends
;-----------------------------------------------------------
TASKSS  STRUC
        TRLINK          DW      ?,0     

        TRESP0          DD      ?     
        TRSS0           DW      ?,0     
        TRESP1          DD      ?     
        TRSS1           DW      ?,0     
        TRESP2          DD      ?     
        TRSS2           DW      ?,0
   TRCR3           DD      ?       ;CR3
        TREIP           DD      ?       ;EIP
        TREFLAG         DW      ?,?     ;EFLAGS

        TREAX           DD      ?       ;EAX
        TRECX           DD      ?       ;ECX
        TREDX           DD      ?       ;EDX
        TREBX           DD      ?       ;EBX
        TRESP           DD      ?       ;ESP
        TREBP           DD      ?       ;EBP
        TRESI           DD      ?       ;ESI
        TREDI           DD      ?       ;EDI
        TRES            DW      ?,0     ;ES
        TRCS            DW      ?,0     ;CS
        TRSS            DW      ?,0     ;SS
        TRDS            DW      ?,0     ;DS
        TRFS            DW      ?,0     ;FG
        TRGS            DW      ?,0     ;GS

        TRLDT           DW      ?,0     ;LDT

        TRFLAG          DW      0       
        TRIOMAP         DW      $+2     
TASKSS  ENDS
;--------------------------------------------------------------
ATDR            =       90H             
ATDW            =       92H           
ATDWA           =       93H           
ATCE            =       98H           
ATCER           =       9AH           
ATCCO           =       9CH           
ATCCOR          =       9EH           
;
ATLDT           =       82H           
ATTASKGAT       =       85H           
AT386TSS        =       89H             
AT386CGAT       =       8CH           
AT386IGAT       =       8EH           
AT386TGAT       =       8FH           
;------------------------------------------------------------------
;
DPL1    =       20H                     ;DPL=1
DPL2    =       40H                     ;DPL=2
DPL3    =       60H                     ;DPL=3
RPL1    =       01H                     ;RPL=1
RPL2    =       02H                     ;RPL=2
RPL3    =       03H                     ;RPL=3
IOPL1   =       1000H                   ;IOPL=1
IOPL2   =       2000H                   ;IOPL=2
IOPL3   =       3000H                   ;IOPL=3
;-------------------------------------------------------
;
D32     =       4000H                 
TIL     =       04H                   
VMFL    =       0002H                 
IFL     =       0200H                 
;-----------------------------------------------
;
JUMP32  MACRO   selector, offsetv
        DB      0EAH           
        DW      offsetv         
        DW      0
        DW      selector       
        ENDM
;-----------------------------------------------
;
CALL32  MACRO   selector, offsetv
        DB      9AH           
        DW      offsetv       
        DW      0
        DW      selector       
        ENDM
;----------------------------------------------
;
JUMP16  MACRO   selector, offsetv
        DB      0EAH           
        DW      offsetv         
        DW      selector       
        ENDM
;---------------------------------------------
;
CALL16  MACRO   selector, offsetv
        DB      9AH           
        DW      offsetv         
        DW      selector       
        ENDM


;FileName:T10.ASM

       INCLUDE 386SCD.ASM     
                         
        .386P
;-------------------------------------------

GDTSEG  SEGMENT PARA    USE16   'GDT'
GDT             LABEL   BYTE
DUMMY           DESCRIPTOR      <>                     
;
NORMAL          DESCRIPTOR      <0FFFFH,0,0,ATDW,0>     
NORMAL_SEL       =       NORMAL - GDT
;
CODEK           DESCRIPTOR      <0FFFFH,,,ATCE,>       
CODEK_SEL       =       CODEK - GDT
;
LDTABLE         DESCRIPTOR      <LDTLEN-1,,,ATLDT,>     
LDT_SEL         =       LDTABLE - GDT
GDTLEN          =       $ - GDT              ;;;;;;;;;;;;;;
GDTSEG  ENDS
;------------------------------------------------

LDTSEG  SEGMENT PARA    USE16   'LDT'
LDT             LABEL   BYTECODEL
;
CODEL           DESCRIPTOR <CODELLEN-1,SEG CODELSEG,,ATCE,>       
CODEL_SEL       =       (CODEL-LDT) + TIL
;
CODEC           DESCRIPTOR      <CODECLEN-1,SEG CODECSEG,,ATCE,>       
CODEC_SEL       =       (CODEC-LDT) + TIL
;
VIDEOBUFF       DESCRIPTOR      <0FFFFH,0,0,0F00H+ATDW,0>               
VIDEO_SEL       =       (VIDEOBUFF-LDT) + TIL
;
TOLDT           DESCRIPTOR      <LDTLEN-1,LDTSEG,,ATDR+DPL3,>           
TOLDT_SEL       =       (TOLDT-LDT) + TIL
;
MDATA           DESCRIPTOR      <MDATALEN-1,SEG MDATASEG,,ATDW+DPL3,>   
MDATA_SEL       =       (MDATA-LDT) + TIL + RPL3       
;
STACKS          DESCRIPTOR      <TOPOFS-1,SEG STACKSEG,,ATDWA,>
STACK_SEL       =       (STACKS-LDT) + TIL
LDNUM           =       ($-LDT) / (SIZE DESCRIPTOR)                     
LDTLEN          =       $ - LDT                                       
LDTSEG  ENDS
;--------------------------------------------
;
MDATASEG        SEGMENT PARA    USE16   'MDATA'
MESSAGE         DB      'Value=',0
BUFFER          db      80      dup (0)
MDATALEN        =       $ - MDATASEG
MDATASEG        ENDS
;--------------------------------------------
;
STACKSEG        SEGMENT PARA    USE16   'STACK'
                DW      512     DUP (0)
TOPOFS          =       $ - STACKSEG
STACKSEG        ENDS
;--------------------------------------------
;
CODECSEG        SEGMENT PARA    USE16   'CODEC'
        ASSUME  CS:CODECSEG

DISPMESS        PROC    FAR
       
        MOV     AH,7
  DISP1:MOV     AL,FS:[SI]
        INC     SI
        OR      AL,AL
        JZ      DISP2
        MOV     ES:[EDI],AX
        INC     EDI
        INC     EDI
        JMP     DISP1
  DISP2:RET
DISPMESS endp
;
;
HTOASC  PROC    FAR
        AND     AL,0FH
        ADD     AL,90H
        DAA
        ADC     AL,40H
        DAA
        ret
HTOASC endpCODECLEN        =       $ - CODECSEG
CODECSEG        ENDS
;----------------------------------------------
;
CODELSEG        SEGMENT PARA    USE16   'CODEL'
        ASSUME  CS:CODELSEG
VIRTUAL2:
        MOV     AX,VIDEO_SEL
        MOV     ES,AX                   
        MOV     EDI,0B8000H     
        ;
        MOV     AX,MDATA_SEL
        MOV     FS,AX                   
        MOV     SI,OFFSET MESSAGE
        ;
        CALL16  CODEC_SEL,DISPMESS     
        ;
        MOV     AX,TOLDT_SEL           
        MOV     GS,AX                 
        ;
        MOV     DX,GS:[CODEL.LIMITL]   
        MOV     SI,OFFSET BUFFER       
        MOV     CX,4
    VIR:ROL     DX,4
        MOV     AL,DL
        CALL16  CODEC_SEL,HTOASC       
        MOV     FS:[SI],AL
        INC     SI
        LOOP    VIR
        MOV     WORD PTR FS:[SI],'H'
        ;
        MOV     SI,OFFSET BUFFER
        CALL16  CODEC_SEL,DISPMESS     
        ;
        JUMP16  CODEK_SEL,VIRTUAL3     
CODELLEN        =       $ - CODELSEG
CODELSEG        ENDS
;-----------------------------------------------------
;
CODEKSEG        SEGMENT PARA    USE16   'CODEK'
        ASSUME  CS:CODEKSEG
VIRTUAL1:
        MOV     AX,LDT_SEL
        LLDT    AX                     
        ;
        MOV     AX,STACK_SEL
        MOV     SS,AX                   
        MOV     SP,OFFSET TOPOFS
        ;
        JUMP16  CODEL_SEL,VIRTUAL2     
VIRTUAL3:
        MOV     AX,NORMAL_SEL           
        MOV     ES,AX
        MOV     FS,AX
        MOV     GS,AX
        MOV     SS,AX
        ;
        MOV     EAX,CR0
        AND     EAX,0FFFFFFFEH
        MOV     CR0,EAX                 
        JUMP16  <SEG REAL>,<OFFSET REAL>
CODEKLEN        =       $ - CODEKSEG
CODEKSEG        ENDS
;=======================================================
;
RDATASEG        SEGMENT PARA    USE16
VGDTR           PDESC   <GDTLEN-1,>     
SPVAR           DW      ?               
SSVAR           DW      ?
RDATASEG        ENDS
;------------------------------
;
RECODESEG       SEGMENT PARA    USE16
        ASSUME  CS:RECODESEG
START:  jmp     $
        ASSUME  DS:GDTSEG
        MOV     AX,GDTSEG
        MOV     DS,AX
        ;
        MOV     BX,16
        MOV     AX,CODEKSEG
        MUL     BX
        MOV     CODEK.BASEL,AX
        MOV     CODEK.BASEM,DL
        MOV     CODEK.BASEH,DH
        MOV     AX,LDTSEG
        MUL     BX
        MOV     LDTABLE.BASEL,AX
        MOV     LDTABLE.BASEM,DL
        MOV     LDTABLE.BASEH,DH
        ;
        ASSUME  DS:RDATASEG
        MOV     AX,RDATASEG
        MOV     DS,AX
        MOV     AX,GDTSEG
        MUL     BX
        MOV     WORD PTR VGDTR.BASE,AX
        MOV     WORD PTR VGDTR.BASE+2,DX
        ;
        CLD
        CALL    INIT_MLDT
        ;
        MOV     SSVAR,SS
        MOV     SPVAR,SP
        ;
        LGDT    FWORD PTR VGDTR
        CLI
        ;
        MOV     EAX,CR0
        OR      EAX,1
        MOV     CR0,EAX
        JUMP16    <CODEK_SEL>,<OFFSET VIRTUAL1>
   REAL:
        LSS     SP,DWORD PTR SPVAR     
        STI
        MOV     AX,4C00H
        INT     21H
;-----------------------------------------
;
INIT_MLDT       PROC
        PUSH    DS
        MOV     AX,LDTSEG
        MOV     DS,AX
        MOV     CX,LDNUM
        MOV     SI,OFFSET LDT   ;CODEL(SI=0)
  INITL:MOV     AX,[SI].BASEL   
        MOVZX   EAX,AX         
        SHL     EAX,4         
        SHLD    EDX,EAX,16     
        MOV     [SI].BASEL,AX   
        MOV     [SI].BASEM,DL
        MOV     [SI].BASEH,DH
        ADD     SI,SIZE DESCRIPTOR      ;
        LOOP    INITL
        POP     DS
        ret
INIT_MLDT endp
RECODESEG       ENDS
                END     START

dedndave

see attached...

leetow2003

Quote from: dedndave on December 30, 2010, 04:13:17 AM
see attached...

Thank you very much.
I download your files,and I compile it,the first I compile it using masm5.1,but it display some error,such as
error A2015: Symbol already different kind: GDT,
and the second I compile it using tasm3.1,but it don't display any error, why?


dedndave

i assembled it using masm v 6.15
i had to make a few changes in your source file - syntax/typos
as for the error, it may be a reserved keyword or something