어셈블리어 처음배우는데 질문이 있어요

muncok의 이미지

MAIN SEGMENT
         ASSUME CS:MAIN,DS:DATA
;
          MOV AX,DATA
          MOV DS,AX
          MOV DL,AA
          MOV AH,2
          INT 21H
          MOV DL,BBB
          MOV AH,2
          INT 21H
          MOV AH,4CH
          INT 21H
;
MAIN ENDS
;
DATA   SEGMENT
AA     DB   'a'
BBB    DB  'b'
;
DATA    ENDS
             END

이렇게 했는데요

Assembling: C:\masm32\aaa.asm
C:\masm32\aaa.asm(4) : error A2004: symbol type conflict

이렇게 나오네요

왜 ax와 data 세그먼트의 크기가 불일치하죠?

또한 mov 변수,16진수가 가능하나요? 불가능하다면 따로 하는방법좀.. 책에서는 즉치는 간접메모리 방식으로 하라고 했는데 뭔말인지[/code]
----------------------
헉 masm32 8v은안되는데 예전 버전으로 하면 되네요 이유가?

Necromancer의 이미지

MASM을 오랫동안 안써봐서 잘 모르겠군요

그리고 오퍼랜드1=변수(메모리주소), 오퍼랜드2=즉치데이터
조합이 가능한 명령은 (mov뿐만 아니라 add/adc/sub/sbb/and/or 등)
오퍼랜드1 앞에 BYTE PTR, WORD PTR 등등 크기를 정확하게
지정해 주어야 하는걸로 알고 있습니다. 특히 숫자로 주소
바로 집어넣은 경우는 무조건 써야 합니다.

(제가 자주 쓰는 NASM의 경우는 아예 변수의 개념조차도 없죠)

Written By the Black Knight of Destruction