반응형

!데이터를 저장할 수 있는 곳

 

 - 메모리

 - 레지스터

 - 코드섹션(코드 내에서도 쓸 수 있다)


명령어


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를 써서 바꾼겁니다

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기