어셈블리어 and, or, xor, not 명령어
·
리버싱/공부
and operand1, operand2 operand1과 operand2를 and 연산한다. 예를 들어 eax가 0xabcd 일 때, and eax, 0x1234를 계산해보겠다. 이전에 약간의 부연 설명을 하자면 0x12는 1byte이다. 2진수(bit)로 바꾸어보면 00010010이다. and 연산은 비교하는 비트가 서로 1일 때만 1이 된다. 0 and 0 = 0 0 and 1 = 0 1 and 0 = 0 1 and 1 = 1 eax(0xabcd)를 비트로 바꾸면 1010 1011 1100 1101 0x1234를 비트로 바꾸면 0001 0010 0011 0100 이제 각 비트들끼리 and 연산 해주면 0000 0010 0000 0100이 된다. 16진수로 바꾸어 주면 0x0204가 된다. eax에 ..
어셈블리어 add, sub, inc, dec 명령어
·
리버싱/공부
간단한 더하기, 빼기 연산이다. add operand1, operand2 operand1에 operand2의 값을 더한다. 예를 들어 eax = 0x0A 일 때, add eax, 3 eax레지스터에 있는 값에 3을 더하므로 eax에 0x0D 값이 들어간다. sub operand1, operand2 operand1에 operand2의 값을 뺀다. 예를 들어 eax = 0x0A 일 때, sub eax, 3 eax레지스터에 있는 값에 3을 빼므로 eax에 0x07 값이 들어간다. inc operand operand에 1의 값을 증가시킨다. 예를 들어 eax = 0x0A 일 때, inc eax eax레지스터에 있는 값에 1이 증가하여 0x0B가 된다. dec operand1, operand2 operand에 1..
shr, shl, sar, sal
·
리버싱/공부
shift 연산이다. 이 어셈블리어를 공부하기 전에 https://dojang.io/mod/page/view.php?id=183 C 언어 코딩 도장: 24.3 부호 있는 자료형의 비트 연산 알아보기 지금까지 부호 없는(unsigned) 자료형으로 비트 연산을 했습니다. 하지만 부호 있는 자료형을 비트 연산할 때는 부호 비트를 조심해야 합니다. 먼저 부호 없는 자료형과 부호 있는 자료형에 >> 연산 dojang.io 이곳에서 보수에 대한 개념을 공부를 하는게 좋다. 부호가 있는 연산은 왼쪽에서 숫자가 채워질 때 1로 채워진다....(모르던 사실) shr, shl은 부호가 없는 연산이다. (즉 c언어로 따지면 unsigned int로 선언된 변수를 연산할 때 사용한다.) 가독성을 위해 AL레지스터(2byte..
Goblebin
'어셈블리어' 태그의 글 목록