Ciao a tutti...
premetto che è la prima volta che uso l'assembler e quindi anche MASM.
Il mio problema è che quando compilo il file assembler mi dà questo
errore:
C:\masm32\mpfile.asm(66) : error A2004: symbol type conflict
ed è relativo all'istruzione:
MOV AX, MyData
Qualcuno ha idea di cosa significhi questo errore?
Uso il compilatore MASM32 versione 8.2. Può andare bene questo compilatore? Altrimenti qualcuno me ne può suggerire un altro?
per completezza vi posto tutto il sorgente assembler:
Grazie a tutti...ciao
;**************************** Stack ***************************
MyStack SEGMENT PARA STACK 'STACK' ;declare stack segment
DB 64 DUP (?) ;reserve 64 bytes
MyStack ENDS
;**************************** Dati ****************************
MyData SEGMENT PARA PUBLIC 'DATA' ;declare data segment
_B DW ?
_A DW ?
MyData ENDS
;**************************** Codice **************************
MyCode SEGMENT PARA STACK 'CODE' ;declare code segment
ASSUME CS:MyCode, DS:MyData, SS:MyStack
;********* routine che stampa 1 carattere ASCII in dl**********
STAMPA PROC
PUSH AX
PUSH DX
MOV AH, 2
INT 21H
POP DX
POP AX
RET
STAMPA ENDP
;****** routine che stampa gli ASCII per il binario n AX*******
ASCIITOBIN PROC
PUSH DX
PUSH SI
PUSH AX
PUSH DI
MOV DI, 0
MOV SI, 10
AGAIN:
MOV DX, 0
DIV SI
ADD DX, '0'
PUSH DX
INC DI
OR AX, AX
JNZ AGAIN
LOOPDISTAMPA:
OR DI, DI
JNZ FINEASCII
POP DX
DEC DI
CALL STAMPA
FINEASCII:
MOV DL, 0DH
CALL STAMPA
POP DI
POP AX
POP SI
POP DX
RET
ASCIITOBIN ENDP
_START:
MOV AX, MyData
MOV DS, AX
;PUSH della costante intera 1 sullo stack.
MOV AX, 1
PUSH AX
;POP dell'identificatore A dallo stack.
POP AX
MOV _A, AX
;PUSH della costante intera 5 sullo stack.
MOV AX, 5
PUSH AX
;POP dell'identificatore B dallo stack.
POP AX
MOV _B, AX
LEA DX, _B
MOV AH, 09H
INT 21H
MOV AX, _B
CALL ASCIITOBIN
MOV DL, 0
CALL STAMPA
LEA DX, _A
MOV AH, 09H
INT 21H
MOV AX, _A
CALL ASCIITOBIN
MOV DL, 0
CALL STAMPA
MOV AH, 4CH
MOV AL, 00
INT 21H
MyCode ENDS
END _START