도서 : x86 프로세서를 위한 어셈블리언어
복습 4장
1. 피연산자 유형
- 변수 이름은 데이터 세그먼트 내의 오프셋을 가리킴
ex> reg : 임의의 범용 레지스터 (reg8 : 8비트 범용 레지스터…)
mem : 8,16,32 비트 메모리 피연산자
2. 명령어
1. 이동
- mov : 데이터 복사, 두 피연산자끼리 같은 크기여야함
ex> mov reg,reg
** mov명령어는 한 메모리 위치에서 다른 메모리 위치로 데이터를 직접 이동시키는데 사용할 수 x
/ 레지스터 이용해야함.
ex> .data
var1 WORD ?
var2 WORD ?
.code
mov ax(레지스터), var1(메모리)
mov var2, aw
2. 덧셈 뺄셈
- INC / DEC : 각각 단일 피연산자에서 +1 / -1
ex> .data
myWorld WORD 1000h
.code
inc myWord
mov bx myWord
dec bx
- ADD : 소스를 같은 크기의 목적지에 더함
- SUB : 목적지에서 소스를 뺌
3. 점프
- JMP : 코드 레이블로 표시되는 목적지로 무조건 이동
4. 반복
1. LOOP : 문장 블록을 지정된 횟수만큼 반복
2. ecx : 자동적으로 카운터로 사용, 루프를 반복할 때마다 자동 감소.
ex> mov ax,0
mov ecx,5 ; 5번 반복
L1:
inc ax ;ax -1
loop L1 ; L1으로 돌아가기 (반복)
3. 연산자*
-OFFSET : 데이터 레이블의 오프셋을 반환
-PTR : 피연산자의 선언된 크기를 바꾸어 사용하기 위해 사용
-TYPE : 변수의 단일 원소의 크기를 바이트 단위로 반환
-LENGTHOF : 레이블과 같은 줄에 있는 값들로 정의되는 배열의 원소의 개수 반환
-SIZEOF : LENGTHOF x TYPE 값 반환
4. 디렉티브
- ALIGN : 변수를 바이트, 워드, 더블워드, 문단의 경계에 정렬
5. 포인터 : 변수의 주소를 포함하는 변수
'System & Reversing > 이론' 카테고리의 다른 글
어셈블리어 1 (0) | 2019.02.15 |
---|---|
프로세서, 레지스터 (0) | 2019.02.15 |
어셈블러, VM (0) | 2019.02.15 |