일단 쉽고 많이쓰고 기본적인 사칙연산인것만 소개한다.
MOV = 대입
-> MOV [주소 & 레지], [값]
주소 혹은 레지스트리에 값을 대입.
SUB = 뺼셈
-> SUB [주소 & 레지], [값]
주소 혹은 레지스트리에 있던 것에 값을 빼줌.
ADD = 덧셈
-> ADD [주소 & 레지], [값]
주소 혹은 레지에 있던 기존값에서 값을 더함.
SHR = 나누기
-> SHR [주소 & 레지], [값]
사실 이건 쉬프트연산이지만 걍 나누기에 가깝다.
SHR은 Shift Right 로써, 비트를 모두 오른쪽으로 한칸씩 옮기는 것이다.
SHR [주소], 3 =========> 0000 0000 1010 1000 -> 0000 0000 0010 1010
여기서 근데 잘 생각해보면 어차피 이건 나눗셈이라는 것을 알 수 있다.
1000 을 SHR 3 해주면 0001 이 된다. 따라서 ======> 1000[8] => 0001[1] => 8/8 = 1
1000 을 SHR 2 해주면 0010 이 된다. 따라서 ======> 1000[8] => 0010[2] => 8/4 = 2
1000 을 SHR 1 해주면 0100 이 된다. 따라서 ======> 1000[8] => 0100[4] => 8/2 = 4
1 => 0001 => 2 <= 나눌 값
2 => 0010 => 4 <= 나눌 값
3 => 0100 => 8 <= 나눌 값
4 => 1000 => 16 <= 나눌 값
....
이런식으로 어느정도 알고있으면 어셈 해석할때 용이할것같다.
SHL = 곱하기
-> SHL [주소 & 레지], [값]
이것도 쉬프트 연산이지만 곱셈에 아주 가깝다.
SHL은 Shift Left 이다. 비트를 싹다 왼쪽으로 옮겨버림.
SHㅣ [주소], 3 =========> 0000 0000 1010 1000 -> 0000 0101 0100 0000
자, 잘보면 이건 곱셈이다 ㅋㅋㅋㅋ
0001 을 SHL 3 해주면 1000 이 된다. 따라서 ======> 0001[1] => 1000[8] => 1*8 = 8
0001 을 SHL 2 해주면 0100 이 된다. 따라서 ======> 0001[1] => 0100[4] => 1*4 = 4
0001 을 SHL 1 해주면 0010 이 된다. 따라서 ======> 0001[1] => 0010[2] => 1*2 = 2
역시 마찬가지로 대충 어느정도 알고있으면 해석에 용이하다.
다음은 조건문에 대해서...
'개발 & 프로그래밍 > Etc.' 카테고리의 다른 글
안드로이드 와이파이 디버깅 (0) | 2016.01.11 |
---|---|
Squid3 를 이용한 프록시서버 구축 (0) | 2015.12.02 |
쉬운 어셈블리어 정리 (0) | 2014.07.11 |
GRUB-Customizer가 설치가 안될때. (0) | 2014.06.04 |
add-apt-repository가 안될때 ㅠㅠ (0) | 2014.06.04 |