티스토리 뷰

intel 32bit assembly - ia32 를 배워보자.

 

인텔 문법 / AT&T 문법 중에 인텔 문법 쓸 예정. 

 

명령어(operator), 인자(operand)로 이루어짐

 

 

 

eax라는 공간에 1이라는 값을 넣어라

mov eax, 1

operator -> mov

operand -> eax, 1처럼 여러개 넣기 가능. 

 

c언어 mov(eax, 1)라고 생각하면 쉽다 함수와 인자

어디에다가 어떤 값을~ 형태

 

 

레지스터를 볼 수 있다. (CPU안에 있음)

레지스터랑 레지스트리랑 헷깔리면 안된다. 레지스트리는 윈도우에서 설정 저장하고 그런거고...

 

 

 

 

step over 누르면 실행도 된당.

올리디버거의 장점

 

오른쪽 마우스 > new origin here 로 위치 바로 이동할 수도 있다. 

 

어셈블리어는 대소문자 구분 안한다. 

mov : 값 덮어씌우기. 

 

mov ebx, eax처럼도 된다. 

move ebx, 0A로 넣을 수도 있음 ㅎㅎ

 

 

EAX를 수정하려고 눌러보면 EAX, AX, AH, AL이 있는걸 볼 수 있다. 

이거는 intel cpu가 과거에 32bit가 아니고 16bit였기 때문인데...

과거에는 AX만 있었는데 2byte를 자리수와 낮은쪽과 높은쪽을 AL(low)와 AH(high)로 나눠서 썼다. 

extended AX에서는 4byte를 2byte씩 AL와 AH로 나눈다. 

요즘은 64bit가 나와서 RAX로 쓰는데 이 프로그램에서는 32bit만 다룬다. 

 

 

EAX EBX ECX EDX

하위 2바이트는 AX BX CX DX

하위 1바이트는 AL BL CL DL

그다음 하위 1바이트는 AH BH CH DH

 

(1바이트 = 16진수 두자리)

 

mov는 크기가 다른 경우 연산할 수 없다. 

'정보보안 > 어셈블리' 카테고리의 다른 글

[Assembly] INT 9h, INT 16h  (0) 2021.06.18
[Assembly] 소문자를 대문자로 바꾸기  (0) 2021.04.28
[Assembly] Data Types  (0) 2021.04.14
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함