본문 바로가기

컴퓨터/어셈블리어

데이터 관련 연산자와 디렉티브 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 ? ; 0.. 더보기
덧셈과 뺄셈 INC(increment)와 DEC(decrement) 명령어 각각 단일 피연산자에서 1을 더하고 1을 뺀다. 구문 INC reg/mem DEC reg/mem Overflow, Sign, Zero, 보조 Carry, Parity 플래그는 목적지 피연산자의 값에 따라서 변한다. ADD 명령어 소스 피연산자를 같은 크기의 목적지 피연산자에 더한다. 구문 ADD dest, source Carry, Zero, Sign, Overflow, 보조 Carry, Parity 플래그는 목적지 피연산자의 값에 따라서 변한다. SUB 명령어 목적지 피연산자에서 소스 피연산자를 뺀다. 구문 SUB dest, source Carry, Zero, Sign, Overflow, 보조 Carry, Parity 플래그는 목적지 피연산자.. 더보기
데이터 전송 명령어 피연산자 유형 즉시값, 레지스터, 메모리 MOV 명령어 소스 피연산자로부터 목적지 피연산자로 데이터를 복사한다. MOV destination, source 규칙 두 피연산자는 같은 크기이어야 한다. 두 피연산자가 모두 멩모리 피연산자일 수는 없다. CS, EIP, IP는 목적지 피연산자일 수 없다. 즉시값은 세그먼트 레지스터로 이동될 수 없다. 메모리에서 메모리로 직접 이동은 불가능 대신 아래와 같은 방법 사용 .data var1 WORD ? var2 WORD ? .code mov ax, var1 mov var2, ax 정수의 제로/부호 확장 작은 값을 큰 값으로 복사 부호없는 정수 .data count WORD 1 .code mov ecx, 0 mov cx, count ecx = 00000001h 부호.. 더보기
기호상수 기호상수 식별자를 정수 수식 또는 텍스트와 연관 시켜서 만든다. 기호상수와 변수 차이 기호 상수 변수 저장공간 사용 아니요 예 실행시간에 값의 변화 아니요 예 등호 디렉티브 기호를 정수 수식과 연관되게 한다. Esc_key = 27 mov al, Esc_key $연산자(현재 위치 카운터) 현재의 프로그램 문장에 대한 오프셋을 반환 list BYTE 10, 20, 30, 40 ListSize = ($-list) EQU 디렉티브 기호를 정수 수식이나 임의의 텍스트와 연관시킨다. name EQU expression expression은 올바른 정수 수식이어야 함 name EQU symbol symbol은 = 또는 EQU로 이미 정의된 기호 이름이어야 한다. name EQU 안에 임의의 텍스크가 들어갈 수 있다.. 더보기
데이터 정의 고유 자료형 자료형 용도 BYTE 8비트 부호없는 정수 SBYTE 8비트 부호있는 정수 WORD 16비트 부호없는 정수(실제 주소 모드에서의 near 포인터일 수도 있음) SWORD 16비트 부호있는 정수 DWORD 32비트 부호없는 정수 (보호 모드에서의 near 포인터일 수도 있음) SDWORD 32비트 부호있는 정수 FWORD 48비트 정수(보호 모드에서의 far 포인터) QWORD 64비트 저수 TBYTE 80비트 (10바이트) 정수 REAL4 32비트(4바이트) IEEE 짧은 실수 REAL8 64비트(8바이트) IEEE 긴 실수 REAL10 80비트(10바이트) IEEE 확장 실수 데이터 정의문 메모리에 변수를 위한 저장 공간을 확보하며 변수 이름은 선택 사항이다. [name] directive.. 더보기
어셈블리 언어의 기초 디렉티브 변수 매크로 프로시저를 정의 세그먼트에 이름을 부여 어셈블러와 관련된 많은 기타 관리작업 수행 명령어 기본구성 - [label:] mnemonic operand(s) [;comment] 레이블 명령어 또는 데이터의 위치를 표시하는 식별자 데이터 레이블 - 변수의 위치에 대한 식별자 코드 레이블 - 분기나 루프 명령어의 목적지로 사용 명령어 니모닉 명령어를 식별하기 위한 짧은 단어 피연산자 레지스터, 메모리, 피연산자, 상수 수직 또는 입출력 포트 명령어에서 첫번째 피연산자는 목적지 두번째는 소스 NOP 명령어 1바이트 공간 차지 아무 동작을 안 함 짝수 주소 경계로 정렬하기 위해 사용 더보기