/*
written by kaspy (kaspyx@gmail.com)
*/
문득 어셈블리 언어를 보다보면 자주쓰지 않는 만큼 해깔릴수 있는것들이 많은것 같아서 정리해보았다. 특히 주소 연산 mov [100], 10 같은것들
많이 사용되지 않는 16bit 어셈블리어지만 레지스터 크기나 명령어 이름만 조금 바꾼 형태로 익힌다면 32bit도 그리 어렵지는 않을것이다.
(ex. 16bit 레지스터 ax -> 32bit는 eax)
우선은 간단한 명령어부터~
MOV 레지스터, 숫자
예제)
- ; ax 레지스터에 지정된 숫자를 넣어줍니다.
- mov ax, 3
MOV 레지스터, [주소]
예제)
- mov ax, [0103]
- ;mov ax, x(변수)
- ;ax 레지스터에 지정된 숫자를 넣어줍니다.
- ;여기서는 0103 번지의 값을 ax에 넣으라는 소린데 이는 소스코드에서 x의 주소입니다.
MOV [주소], 숫자
예제)
- mov word ptr [0103], 2013
- ;0103 주소에 저장되어 있는 값에 word 만큼의 크기로 2013 이라는 값을 저장합니다.
- ;(20 상위 주소에 13은 하위 주소에)
MOV 레지스터, 숫자+배열 인덱스
예제)
- mov dl, [bx+0105]
- ; mov dl, y[bx]
- ; bx레지스터의 값 + 105 주소의 값을 dx레지스터 하위 1바이트 레지스터에 저장합니다.
- ; 이와 같이 bx레지스터는 인덱스에 사용됩니다.
MOV 레지스터, 레지스터
예제)
- mov ds, ax
- ;데이터 세그먼트(ds)나 엑스트라 세그먼트(ex)도 값을 바꿀 수 있습니다.
INC [주소]
예제)
- inc byte ptr [bx]
- ;bx에 저장된 값의 주소의 값을 1 증가시킵니다. (모르는 주소)
* 관련 링크 참조
http://kaspyx.tistory.com/entry/16bit-Assembly-예제-정리-2
'IT > Intel 16bit Assembly' 카테고리의 다른 글
x86 16bit 어셈블리(Assembly) 예제 정리 - 4 (2) | 2015.04.10 |
---|---|
x86 16bit 어셈블리(Assembly) 예제 정리 - 3 (0) | 2015.04.09 |
x86 16bit 어셈블리(Assembly) 예제 정리 - 2 (0) | 2015.04.09 |