LEA 명령과 MOV 명령의 차이점

LEA(Load Effective Address) 명령은 본질적으로 산술명령이다. 어떤 메모리 주소에 접근하는 작업을 수행하는 것이 아니라 일반적으로 주소를 계산하기 위해서 사용된다. 예를 들어  ESP : 0x0012FFBC  0x0040205E : “HELLO”인 경우에  mov EBP,ESP  push 0040205E  mov EAX,[EBP-4]  lea EBX,[EBP-4]위 명령을 실행할 경우  EAX : 0040205E  EBX : 0012FFB8의 값을 가지게 된다. 즉, EAX는 EBP-4가 가리키는 주소가 가지고 있는 … 더 읽기

플래그 설정 명령어

연산자 예시 설명 stc stc 캐리 플래그(CF)를 1로 설정한다. clc clc 캐리 플래그(CF)를 0으로 설정한다. std std 방향 플래그(DF)를 1로 설정한다. cld cld 방향 플래그(DF)를 0으로 설정한다. sti sti 인터럽트 플래그(IF)를 1로 설정한다. cli cli 인터럽트 플래그(IF)를 0으로 설정한다.

어셈블리 코드 해석

원본 : http://www.daniweb.com/forums/post382693.html#post382693 간단한 C++ 코드의 어셈블리 코드와 해석 -C++ 코드- int main() {         short x=6;         short y=9;         short z;          z = x+y;         return 0; } -어셈블리 코드-         .file    “CSCILab03-1.cpp” ; This is the input source file.  This will probably make it into the ; assembler output as some kind of debug record for … 더 읽기

조건부 점프 명령어

플래그 값에 따른 점프 명령어 예시 설명 jz jz L1 ZF 값이 1이면 해당 레이블로 이동한다. jnz jnz L1 ZF 값이 0이면 해당 레이블로 이동한다. jc jc L1 CF 값이 1이면 해당 레이블로 이동한다. jnc jnc L1 CF 값이 0이면 해당 레이블로 이동한다. jo jo L1 OF 값이 1이면 해당 레이블로 이동한다. jno jno L1 … 더 읽기

부울 명령어

명령어 예시 설명 and and eax,ebx 피연산자를 AND 연산한다. or or eax,ebx 피연산자를 OR 연산한다. xor xor eax,ebx 피연산자를 XOR 연산한다. not not eax 피연산자의 비를 모두 반전시킨다. (1의 보수 값) test test eax,ebx 피연산자를 AND 연산한다. 플래그는 설정되지만 피연산자는 수정되지 않는다.

연산자

연산자 예시 설명 offset mov esi,OFFSET 변수명 이 연산자를 포함하는 세그먼트의 시작으로부터의 변수의 거리를 반환한다. ptr mov eax,WORD PTR 변수명 변수의 선언된 크기를 바꾸어 사용할 수 있게 한다. type mov eax,TYPE 변수명 변수 또는 배열 원소의 크기를 반환한다. lengthof mov eax,LENGTHOF 변수명 배열의 원소 개수를 반환한다. sizeof mov eax,SIZEOF 변수명 배열의 초기값이 설정된 바이트 수를 … 더 읽기

기본 명령어

명령어 예시 설명 inc inc eax 피연산자에서 1을 더한다. dec dec eax 피연산자에서 1을 뺀다. add add eax,ebx 소스 피연산자를 같은 크기의 목적 피연산자에 더한다. sub sub eax,ebx 목적 피연산자를 같은 크기의 소스 피연산자로 뺀다. neg neg eax 피연산자를 2의 보수로 변환하여 부호를 바꾼다. cmp cmp eax,ebx 목적 피연산자를 같은 크기의 소스 피연산자로 뺀다. 플래그는 … 더 읽기

자료형

자료형 설명 BYTE 부호없는 8비트 변수 SBYTE 부호있는 8비트 변수 WORD 부호없는 16비트 변수 SWORD 부호있는 16비트 변수 DWORD 부호없는 32비트 변수 SDWORD 부호있는 32비트 변수 QWORD 64비트 변수 TBYTE 80비트 변수 REAL4 4바이트(32비트) 실수 변수 REAL8 8바이트(64비트) 실수 변수 REAL10 10바이트(80비트) 실수 변수

어셈블리어

고급언어 vs 저급 언어 응용형태 고급언어 저급언어 중대형 소프트웨어 많은 부분의 코드를 쉽게 체계화하고 유지, 보수가 쉽다. 형식을 갖춘 구조가 없어 프로그래머가 인위적으로 구조를 만들어주어야 한다. 하드웨어 장치 드라이버 하드웨어를 직접 제어할 수 없는 경우가 많아 까다로운 코딩 기술이 사용되어야하기 때문에 유지, 보수가 힘들다. 하드웨어 제어를 쉽게 할 수 있고 프로그램의 길이가 짧고 정리가 잘 … 더 읽기
바로가기