OFFSET 연산자
데이터 레이블의 오프셋을 반환한다.
예제
.data
bVal BYTE ?
wVal WORD ?
dVal DWORD ?
dVal2 DWORD ?
.code
mov esi, OFFSET bVal ;ESI = 00404000
mov esi, OFFSET wVal ;ESI = 00404001
mov esi, OFFSET dVal ;ESI = 00404003
mov esi, OFFSET dVal2 ;ESI = 00404007
ALIGN 디렉티브
변수를 바이트, 워드, 더블워드, 또는 문단의 경계에 정렬한다.
예제
bVal BYTE ? ; 00404000
ALIGN 2
wVal WORD ? ; 00404002
bVal2 BYTE ? ; 00404004
ALIGN 4
dVal DWORD ? ; 00404008
dVal2 DWORD ? ; 0040400C
PTR 연산자
피연산자의 선언된 크기를 바꾸어 사용하기 위해서 사용
예제
.data
myDouble DWORD 12345678h
.code
mov ax, WORD PTR myDouble
TYPE 연산자
변수의 단일 원소의 크기를 바이트 단위로 반환한다.
예제
.data
var1 BYTE ?
var2 WORD ?
var3 DWORD ?
var4 QWORD ?
수식 |
값 |
TYPE val1 |
1 |
TYPE val1 | 2 |
TYPE val1 | 4 |
TYPE val1 | 8 |
LENGTHOF 연산자
레이블과 같은 줄에 있는 값들로 정의되는 배열에 있는 원소의 개수를 반환한다.
예제
.data
byte1 BYTE 10, 20, 30
array1 WORD 30 DUP(?), 0, 0
array2 WORD 5 DUP(3 DUP(?))
array3 DWORD 1, 2, 3, 4
digitStr BYTE "12345678", 0
수식 |
값 |
LENGTHOF byte1 |
3 |
LENGTHOF array1 |
30 + 2 |
LENGTHOF array2 |
5 * 3 |
LENGTHOF array3 |
4 |
LENGTHOF digitstr |
9 |
SIZEOF 연산자
LENGHOF와 TYPE을 곱한 값을 반환한다.
예제
.data
intArray WORD 32 DUP(0)
.code
mov eax, SIZEOF intArray ; EAX = 64
LABEL 연산자
저장공간을 할당하지 않고도 레이블을 삽입하고 그것에 크기 속성을 주게 한다.
예제
.data
val16 LABEL WORD
val32 DWORD 12345678h
.code
mov ax, val16 ; AX = 5678h
mov dx, [val16 + 2] ; DX = 1234h
두 개의 작은 정수로부터 큰 정수를 만들 필요가 있을 때 사용
예제
.data
LongValue LABEL DWORD
val1 WORD 5678h
val2 WORD 1234h
.code
mov eax, LongValue ; EAX = 12345678h
'컴퓨터 > 어셈블리어' 카테고리의 다른 글
덧셈과 뺄셈 (0) | 2013.01.25 |
---|---|
데이터 전송 명령어 (0) | 2013.01.22 |
기호상수 (0) | 2013.01.14 |
데이터 정의 (0) | 2013.01.09 |
어셈블리 언어의 기초 (0) | 2013.01.08 |