일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- preemption #
- 겨울 부산
- k8s #kubernetes #쿠버네티스
- VARCHAR (1)
- table not found
- PersistenceContext
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- kotlin
- tolerated
- taint
- mp4fpsmod
- 코루틴 빌더
- JanusGateway
- JanusWebRTCServer
- PytestPluginManager
- pytest
- terminal
- Value too long for column
- JanusWebRTCGateway
- Spring Batch
- 개성국밥
- 티스토리챌린지
- JanusWebRTC
- vfr video
- 코루틴 컨텍스트
- python
- 자원부족
- 깡돼후
- 달인막창
- 오블완
너와 나의 스토리
어셈블리어 - 구조체 사용법 / COORD 본문
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 } }으로도 쓸 수 있음
* 형 변환을 잘해주자!
'Programming Language > Assembly' 카테고리의 다른 글
어셈블리 - FPU(부동 소수점 유닛) (0) | 2019.06.07 |
---|---|
어셈블리 - push&pop 명령어 / USES Operator (0) | 2019.06.03 |
어셈블리 - JMP and LOOP Instructions (0) | 2019.06.03 |
어셈블리(ch5) - 라이브러리 프로시저 호출 (Linking to an External Library) (0) | 2019.06.03 |
어셈블리 - 지역 변수/ 프로시저 매개변수 넘기기/ 프로시저 프로토타입 (0) | 2019.06.01 |