관리 메뉴

너와 나의 스토리

어셈블리어 - 구조체 사용법 / COORD 본문

Programming Language/Assembly

어셈블리어 - 구조체 사용법 / COORD

노는게제일좋아! 2019. 6. 1. 00:26
반응형

C/C++와 유사

구조체 형태 예시

[구조체이름] STRUCT

       [data]

[구조체이름] ENDS

COORD STRUCT
    x WORD ?
    y WORD ?
COORD ENDS

COORD 구조체는 MS-Window 라이브러리에 이미 존재하는 것으로 따로 선언해 줄 필요없이 바로 사용가능하다.

PosXY COORD <3,30> 이런식으로 사용 가능

ㄴ PosXY.x = 3

ㄴ PosXY.y = 30

으로 초기화 된다.

 

 

구조체 배열

ex1)

.data

  MaxVal=3

  AllPoints COORD MaxVal DUP(<0,0>) ; MaxVal개의 <0,0> 쌍 선언

.code

  ; index 직접 지정해서 사용하는 방법

  mov (COORD PTR AllPoints[0]).X, 4  ; AllPoints[0].X =4 

  mov (COORD PTR AllPoints[0]).Y, 5  ; AllPoints[0].Y =5

  mov eax, DWORD PTR AllPoints[0].X ; eax=4

  mov ebx, DWORD PTR AllPoints[0].Y ; ebx=5; 

 

  ; 루프 이용해서 접근  ->  <<1,1>,<2,2>,<3,3>>이렇게 값이 들어가게 됨

   mov edi,0
   mov ecx,MaxVal
   mov ax,1  ; (x,y)=(1,1)로 초기화 해주기 위해서
   L1:
   mov (COORD PTR AllPoints[edi]).X,ax
   mov (COORD PTR AllPoints[edi]).Y,ax
   add edi,TYPE COORD    ; COORD 타입만큼-> WORD이므로 4만큼 증가시킴
   inc ax
   loop L1

   

● Nested Structures

ex)

Rectangle STRUCT

   UpperLeft COORD <>

   LowerRight COORD <>

Rectangle ENDS

 

.data

rect1 Rectangle <<10,10>,<50,20>>    ; { { 10,10 } , { 50,20 } }으로도 쓸 수 있음

 

 

* 형 변환을 잘해주자!

반응형
Comments