반응형

Programming Tools/Assembly_어셈블리 5

어셈블리어 정리노트 4 - 조건 분기 명령어

조건분기 JZ jmp [주소] 이명령어는 무조건분기다. jz [주소]의 경우, 이전 명령이 결과가 0이면 작동한다. 예를들면 mov eax, 1 inc eax // 2 jz 401005 // 작동ㄴ dec eax // 1 dec eax // 0 jz 401009 // 작동 ㅇ 상태 레지스터 ZF(Z FLAG) 더 정확히 표현하기 위해 상태레지스터를 소개한다. CPAZSTDO 등의 1비트 상태레지스터(플래그)를 이용해 조건을 이용하는 명령어들의 동작 여부를 결정한다. JZ의 경우, Z 플래그가 1이어야 작동한다. Z플래그는 연산의 결과가 0이 되었을 때 1이 된다. 인텔 CPU 기준으로 JE는 JZ와 같은 기계어를 공유한다. 따라서 둘다 Z플래그가 1일 때 동작한다. 모든 명령어가 플래그를 바꾸는 것은 아..

어셈블리어 정리노트 3 - 주소 참조 연산자 [], 오프셋, 인덱스 (dereference, offset, index)

주소 참조 연산자 [] 주소 참조 연산자 []는 레지스터에 주소값을 넣고, 그 레지스터에 []를 써서 해당 메모리에 접근하게 한다. C언어에서 dereference 연산자 *라고 생각하면 된다. mov eax, 00402000 // mov eax, offset 00402000으로 변환된다. mov dword ptr [eax], 10 // mov dword ptr ds:[eax], 10 // output // 00402000 메모리에 10이 들어간다.mov dword ptr ds:[eax], 10에서 ds는 data segment라는 의미이다. 데이터 세그먼트에 관한 어셈블리어 지시어 다른 참고할 만한 자료 이중 괄호([[]])는 안된다. 그래서 메모리에 다른 메모리의 주소를 담아 접근하려면 이렇게 범용레..

어셈블리어 정리노트 3 - JMP, INC, DEC, ADD, SUB

JMP 명령어 명령어가 있는 메모리로 이동하게 해주는 jmp JMP (SHORT) 00401005 // 00401005 메모리로 이동한다.EIP는 실행할 곳의 주소를 담는 레지스터이다. EIP에 들어있는 주소로 이동해서, 해당 메모리 주소에 있는 명령어를 RAM에서 가져온다. 그러고 나서 그 명령어를 실행한다. 그리고 EIP는 읽어온 주소값의 크기만큼 증가한다. JMP의 경우, MOV EIP 00401005가 들어간다고 생각하면 됨 단 EIP는 범용 레지스터가 아니므로 MOV가 아니라 JMP를 이용하는 것이다. 00401000 - MOV EAX, 0 00401005 - MOV EBX, 0 0040100A - MOV ECX, 0 0040100F - JMP (SHORT) 00401005의 각각의 기계어는 B..

어셈블리어 정리노트 2

INTEL 문법 기준이다. 어셈블리어 명령 구조 opcode operand opcode가 연산자 operand가 피연산자 범용레지스터 EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI 등의 4바이트=32비트 레지스터 공간이다. EAX 12345678 이면, AX 5678 AH 56 AL 78 MOV 연산자 mov eax, 1 //1을 eax로 대입 mov eax, ebx //ebx을 eax로 대입 MOV REG REG 인경우(피연산자가 모두 레지스터인 경우), 양쪽의 크기가 같아야한다. 어셈블리어는 크기 조절에 관한 명령어가 없다. 하나의 주소에 1바이트=8비트 크기의 메모리가 할당되어있다. 주소지정은 다음과 같이 [address] 형태로 ex ) [4002000] 그 한 바이트만 지..

어셈블리어 정리노트 1

참고자료 www.youtube.com/watch?v=yf7yFJHTif8 www.youtube.com/watch?v=s6oLWpLj560 www.youtube.com/watch?v=Q8xCTztsRmw&list=PL1IheunyylbaYAzQv8bdu3hxq8YX5cKlY 어셈블리어 문법은 AT&T, INTEL, GASM등 여러 문법 체계가 있다. 숫자 표기 AT&T : $1, $2 INTEL : 1, 2 레지스터 표기 AT&T : %RAX, %RBX INTEL : RAX, RBX 참조자 AT&T : () INTEL : [] OFFSET(주어진 주소로부터의 거리) AT&T : 4(EAX) INTEL : [EAX + 4] 4. 그 외 주요 범용 레지스터 EAX : Extended Accumulator Re..

반응형