어셈블리어 연산자
SUB
- 빼기, 연산결과 0-> ZF 1
IMUL
- 부호 있는 곱셈, 부호 비트를 제외하고 연산 후 부호를 붙임
CMP
- op1,2를 비교, 같으면 ZF = 1
TEST ; Logical Compare
- 두 피연산자를 AND연산하여 결과가 0이면 ZF가 1로 세트 됨, 보통 값이 있는지 없는지를 확인할때 사용
ex) if( a )
REP ; Repeat
- ECX가 0이 될때까지 반복, 시작시 ECX-1
REPNE ; Repeat until not equal
- ZF가 1로 세트되거나 ECX가 0이 될때까지 반복, 시작시 ECX-1, 보통 SCAS와 같이 쓰임
SCAS ; Scan string
- AL 또는 AX 또는 EAX와 EDI가 가리키는 메모리 내용 비교후 같으면 ZF = 1, 비교한만큼 EDI증가
STOS ; Store string
- EAX를 EDI가 가리키는 메모리에 저장, 기록한 크기에 따라 EDI도 증가
SBB ; Subtract with Borrow
- CF가 있을시 dst = dst - src - CF
MOVSX ; move with signe extend
- 부호 있는 확장 전송 음수면 확장될때 확장된 공간을 1로 체움
MOVZX ; move with zero extend
- op1에 op2를 확장전송, op1의 나머지는 0으로 체움
SAR ; Shift Arithmetic Right
- 오른쪽으로 쉬프트연산 하고 삐져나오는건 CF로 왼쪽 빈공간은 부호비트 복사
SAL ; Shift Arithmetic Left
- 왼쪽으로 쉬프트 연산 하고 최하위 비트는 0으로 체움
CALL = push eip; jmp func
LEAVE = mov esp,ebp; pop ebp
ret = pop eip, jmp eip
- eip는 직접 수정 못하지만 궂이 동작을 구분하자면 위와 같음
unsigned 명령어
JA, JAE, JB, JBE, JNA, JNAE, JNB, JNBE, DIV, MUL
signed 명령어
JG, JGE, JL, JLE, JNG, JNGE, JNL, JNLE, SAR