그냥 간과 하실 것도 같아서. 1. mov 와 lea의 차이점 사실 주소에 []를 씌우면 lea와 같을 수도 있는거죠. 2. 오퍼랜드에 []가 있는 것과 없는 것의 차이점. 3. callxxxx 은 push eip+4 랑 jmp xxxx 랑 같이 있는 것. 그럼 RET, RETN?은? 4. eip+4 를 한다...
IA-32 매뉴얼을 참고하여 , 해당 명령어에 관해서 설명을 하겠습니다. 1. 명령어 소개 RDTSC는 IA-32 아키텍쳐 기반으로 설계된 CPU에서 동작하는 명령어입니다. CPU도 디지털 회로이고 , 디지털실험을 해보신분은 알겠지만 , 그 많은 회로들중에서 카운터 회...
간만에 인터넷 검색하다가 찾은 곳입니다.
http://www.drpaulcarter.com/
위 싸이트 가보니.. PC 어셈블리에 대해 정리한 파일이 있더군요.
지은이는 Paul A.Cater라는 사람인데.
우리나라 이재범씨가 번역했다고 하네요.
최신자료가 올라와 있는것 같아 ...
일반적으로 c나 c ++을 이용해
call by reference 로 만든 swap 함수를 작성하면
void swap(int *a,int*b)
{
int temp=*a;
*a=*b;
*b=temp;
}
로 만들수가 있죠.
이걸 어셈블리어 로 고쳐보면 처음 셋팅 부분과 마지막 세팅 부분을 빼면 중간부...
POP - 워드를 스택으로부터 뽑아낸다 사용: POP dest 수정되는 플래그: 없음 현재 스택 탑(SS:SP)에 있는 워드를 데스티네이션으로 전송한후, 새로운 스택 탑의 포인트에 SP를 2씩 늘려준다. CS 는 불가능한 데스티네이션이다. 클럭 바이트 오퍼랜드 808x 286...
MOV - 바이트나 워드를 옮김 사용: MOV dest,src 수정되는 플래그: 없음 바이트나 워드를 소스 오퍼랜드로 부터 데스티네이션 오퍼랜드로 복사한다. 만약 데스티네이션이 SS 라면 버그 많은 808x CPU 빼고는 인터럽트(중단)가 불가능하다. 어떤 CPU들은 만약 ...
CALL - 콜 문 사용: CALL destination(주소) 수정되는 플래그: 없음 Instruction Pointer (인스트럭션 포인터, 이하 IP)를 스택에 넣어주고 IP 와 proc-name(프로세서 네임이라고 추정)의 주소를 로드한다. 코드는 CS:IP 에서 실행을 계속한다. 클럭 오...
CMP - 비교문 사용법: CMP dest,src 수정하는 플래그: AF CF OF PF SF ZF source(소스)를 destination(데스티네이션)에서 빼고, 플래그를 갱신한다. 하지만 결과를 저장하지는 않는다. 플래그는 그 이후에도 컨디션을 위해 체크될 수 있다. 클럭 바이트 ...
Jxx - 점프 명렁문 어셈명령어 의 미 점프 조건 JA 결과가 1보다 클 경우 점프 CF=0 and ZF=0 JAE 결과가 1보다 크거나 같을경우 점프 CF=0 JB 결과가 1보다 작을 경우 점프 CF=1 JBE 결과가 1보다 작거나 같을경우 점프 CF=1 or ZF=1 JC 캐리 플래그가 1일경...
어셈블리언어로 프로그램을 만들기 위해서는 두가지 방법이 있다. 한가지는 TASM 또는 Turbo Assembler(of Borland)를 사용하는것과 하나는 디버거를 쓰는것이다. 이번 섹션에서는 디버거를 사용할것이다. 왜냐하면 MS-DOS가 깔려있는 PC에는 모두 디버거가 있...
CPU는 4개의 내부 레지스터를 가지고 있다. 각각은 16비트 이다. 보통 AX, BX, CX, DX로 불리고 8비트로 두개의 레지스터로 나누면 AX는 high byte인 AH와 low byte인 AL 레지스터로 나뉜다. BX, CX, DX도 마찬가지로 적용된다.
레지스터들은 각각의 고유한 ...
JMP 점프
NOP 아무것도 안한다
JE - Jump if equal 비교나 테스트의 결과가 같다면 점프
JNE 은 이거랑 만대로 생각하시면 됩니다.
Je는 Jump if equal 였죠 JNE은 N이 추가 되있네요 풀어보면 Jump if NOP equal 이네요
그럼 JNE 은 아시겠죠 ?
...