반응형
!데이터를 저장할 수 있는 곳
- 메모리
- 레지스터
- 코드섹션(코드 내에서도 쓸 수 있다)
명령어
1. mov
- 할당 연산자와 비슷한 개념
- mov dst, src
! dst, src 둘 모두 메모리가 올수는 없다.
레지스터 ex)
메모리 ex)
(!중요)18행의 mov num,10에서 num은 메모리가 아니라 주소일뿐이다
주소는 메모리가 아니라 숫자일뿐입니다
nasm에서 메모리 표현방식은 [](effective address)입니다
[num]으로 바꾸고 하였지만 이번엔 size에러가 뜨는걸 확인 할 수 있습니다
num은 시작주소일뿐이고 크기는 모르기 떄문에
dword[num]으로 크기까지 지정해줘야합니다
크기를 지정해줬지만 10이 아닌 숫자가 나왔음을 볼 수 있습니다
고쳐보도록 하겠습니다
고치니 10까지 잘 나오는걸 알 수 있습니다
레지스터 ex2)
!보통 []앞에는 사이즈를 적어주는게 좋다
ex )한글자씩 출력
넣는것 1바이트에 넣었지만 push가 최소 16비트는 push 해야하므로 eax전체를 push 하였습니다
2번째 단어 출력하기
사칙연산은 원래 어셈블리에서는 명령어가 따로있지만
[]안에서는 기호로도 가능합니다
[실습] 3번쨰 숫자 값 출력하기
2.lea(Load Effective Address)
- 유효주소를 계산하는 명령어
- lea dst, src
!mov와 lea의 차이점
lea는 주소값이 계산되어 나옵니다
[실습] lea를 써서 3번째 값 꺼내오기
mov 예제를 lea를 써서 바꾼겁니다
'Security > System' 카테고리의 다른 글
[SYSTEM SECURITY]6.어셈블리 (scanf) (0) | 2017.10.19 |
---|---|
[SYSTEM SECURITY]5.어셈블리 (사칙연산) (0) | 2017.10.18 |
[SYSTEM SECURITY]3. 어셈블리 코드 분석 및 레지스터 (0) | 2017.10.16 |
[SYSTEM SECURITY]2. 실행파일 구조 및 메모리 (0) | 2017.10.13 |
[SYSTEM SECURITY]1. REDHAT 6 설정과 컴파일 과정 (0) | 2017.10.13 |