크리에이티브 커먼즈 라이센스

홈페이지HOME

PHP

JavaScript

HTML

CSS

드롭다운메뉴

제로보드4

도   움   말

백지 건강강좌/자가임상체험

물박사(자가면역질환...)^미러

전동명(천연물질사전)^미러

竹田 장승옥(블로그)^글목록

계산환산(계산기)^ 단위변환

관주성경 TTS 일반파일 TTS

바이블로 Bible_ro 다운로드

다운로드>폰에 복사
>파일선택...설치됩니다.

[도움말 보기] 바로가기

개선 요구, 충고는
아래 관리자 연락
전화/메일 부탁 드립니다.
최대한 빨리 처리하고
업데이트 올리겠습니다.


asm_86.


structure에 의한 변수 정의


     37 이형문 buju8t 01/13 916

     9 스트럭처(structure)에 의한 변수의정의



스트럭처(structure)에 의한 변수의 정의


스트럭처란 구조내지는 구조체라는 의미입니다.


 어느 단체에서 A,B,C 세 사람의 연령(AGE),신장(HEIGHT),체중(WEIGHT)의

통계를 구한다고 합시다. 이와 같은 데이터를 프로그램 중에 나열하는

경우에,지금까지의 방법으로는 다음과 같이 됩니다.


A_AGE DB 45

A_HEIGHT  DB 170

A_WEIGHT  DB 72

B_AGE DB 38

B_HEIGHT  DB 164

B_WEIGHT  DB 58

C_AGE DB 25

C_HEIGHT  DB 175

C_WEIGHT  DB 68


이와 같은 방법에서의 정의는,데이터의 수가 증가됨에 따라 대단히

귀찮게 되고 또한 알기 어렵게 되어버립니다.

 그래서 어느 하나의 변수 아래에서 몇가지 항목으로 나누어지는 것과 같은

데이터 구조를 정의할 수 있으면 편리할 것입니다. 그래서 MASM에서는 스트

럭처형 변수라고 하는 구조를 가진 변수를 정의할 수 있읍니다.

 스트럭처형 변수를 사용하려면 STRUC 의사명령을 사용하여 데이터의 구조

를 정의해 둡니다.






 예를 들어 하나의 변수이름(이 경우에는 개인의 이름)을 기초로 하는 항목

이 AGE,HEIGHT,WEIGHT 와 같은 경우에는 다음과 같이 정의 합니다.


AHW STRUCT

AGE DB

 ?

HEIGHT  DB  ?

WEIGHT  DB  ?

AHW ENDS


 여기에서 AHW 가 스트럭처 이름이 되고 AGE,HEIGHT,WEIGHT 가 필드 이름

입니다.여기에서 정의된 스트럭처 이름은 데이터의 구조에 대해 붙여진 이

름으로서 변수이름 그 자체는 아닙니다.


실제로 변수를 정의하기 위해서는 이 스트럭처 이름을 사용하여


A AHW <45,170,72>

B AHW <38,164,58>

c AHW <25,175,68>


 와 같은 식으로 합니다.그리하여 A는 스트럭처변수이름, < > 속이

 그 변

수의 각 항목에 대해 주어진 데이터의 초기치 입니다.


 이것으로써 A,B,C,....이 3개의 필드(AGE,HEIGHT,WEIGHT)를 가지는 스트럭

처형 변수로서 정의되어 각 필드에 대응하는 데이터가 설정됩니다.


스트럭처형 변수 내의 각각의 요소를 꺼내려면 ,스트럭처형변수이름 다음에

피리오드(.)와 필드 이름을 붙인 것을 사용합니다.






 예를 들면


MOV AL,A.AE

MOV BL,A.HEIGHT

MOV CL, A.WEIGHT


또한 전원의  합계를 구하려면


MOV AL,A.AE

ADD AL,B.AGE

ADD AL,C.AGE


라고 하면 됩니다.






* 20시간 15분 12초를 초로 바꾸는 프로그램


CODE  SEGMENT

ASSUME CS:CODE,DS:DATA

;

MOV AX,DATA

MOV DS,AX

;

MOV BL,SIXTY

MOV AL,TIME1.HOUR

MUL BL

MOV CL,TIME1.MIN

MOV CH,0  ;

레지스터의 크기를 일치시키기 위해

ADD AX,CX

MOV BX,SIXTY

MUL BX

MOV CL,TIME1.SEC

MOV CH,0

ADD AX,CX

ADC DX,0 ; AX레지스터에 덧셈을

한 후 만일 자리올림이

 일어나면

안되므로 자리올림 만큼을 DX레지스터에

더하기

위해서

MOV SEC1,DX

MOV SEC2,AX

;

MOV AH,4CH

INT 21H

;

CODE  ENDS


DATA  SEGMENT

;

SIXTY EQU 60

;

TIME STRUC

HOUR  DB ?

MIN DB ?

SEC DB ?

TIME ENDS

;

TIME1 TIME <20,15,12>

;

SEC1  DW ?

SEC2  DW ?

DATA  ENDS

END






스트럭처의 사용순서


1. 스트럭처 이름에 대한 데이터 구조의 정의

2. 변수이름에 대하여 스트럭처 이름을 사용하여 스트럭처형 변수라는 것을

 정의함과 동시에 초기화 데이터를 줍니다.


이와 같이 단순히 스트럭처를 선언하는 것 만으로는 메모리 상에 데이터가

설정되지 않으므로 스트럭처를 사용할 경우에는 반드시 2단계로 선언하지

않으면 안됩니다.


-G=0,30


AX=4CD0  BX=003C  CX=000C  DX=0001  SP=0000  BP=0000

 SI=0000  DI=0000

DS=5048  ES=5034  SS=5044  CS=5044  IP=0030 NV

UP EI PL NZ NA PO NC

5044:0030CD21  INT 21

 

-D0,7

5048:0000  14 0F 0C 01 00 D0 1C 00 ........


-Q  


결과는 0003 - 0006 번지에있는 00011CD0 이고,이것을 10진수로 바꾸면

72912가 됩니다.

 G 커맨드는 코드세그먼트에 대하여 D 커맨드는 데이터 세그먼트를  기초로

하여 사용되고 있읍니다.



ID:
PW:

     0 분
     1 분

자유게시판

건강백과 HOME

홈페이지 HOME

조   약     HOME

생활지혜 HOME

서식양식 HOME

법원 전산양식 검색

In Na zum

비공개 HOME

백과넷 포탈 : 건강/법률(메인)/홈피/서식/조약/생활지혜

◁ 2002.9.1.~2018.10.16. ▷

관리자 연락(저작권 의심 신고) : 김병희 010-6204-4973 k8z7@hanmail.net