8086_ 매크로

FeelSoo·2022년 5월 22일
0
post-thumbnail
post-custom-banner

매크로란 무엇일까?

반복되는 일련의 명령어들을 한 줄로 간략화한 명령어이다.

위와 같이 3개의 명령문이 2번 반복 실행되야 하는 기능 구현이 필요할 경우 모든 명령문들을 매번 적기는 번거롭다.

그래서 이를 짧은 명령문으로 정의한 후 그 명령문을 호출하면 위와 같이 실제로 치환되어 사용할 수 있다.

다음은 매크로를 정의하기 위한 기본 구조와 실행 예시이다.

매크로는 서브루틴 ( 인터럽트 : 메인루틴 진행 중 분기 >> 특정 조건 만족하면 해당하는 프로그램 명령 수행 ) 에 사용될 수 있다.

매크로를 사용하기 위해서는 우선 매크로 정의가 필요하다. 그리고 매크로를 호출해야 한다.

여기서 형식 인수와 실인수 개념이 등장한다.

형식 인수는 매크로 형태를 정의할 때 사용되는 구조적인 인수고 실인수는 이 형식 인수에 대입하려는 값이다.

위의 사진 중 상단에서 ADDATA1 MACRO ARG를 통해 매크로를 정의했다.

이 명령어는 ARG라는 형식 인수를 갖는 ADDDATA1을 정의하겠다는 뜻이다.

호출할 때에는 ADDATA1 ( 형식인수 자리에 대입하기 원하는 실인수 ) 형태로 쓸 수 있다.

그래서 하단 명령어를 보면 ADDDATA1 DATA1 그리고 ADDDATA1 DATA2를 사용한 것을 볼 수 있다.

형식 인수 자리에 DATA1, DATA2를 각각 집어넣음으로써 원하는 해당값을 AX, BX, CX에 삽입할 수 있게 된다.

다음과 같이 형식 인수로 LABEL도 붙일 수 있다.

그리고 조건문을 활용해서 매크로를 작성할 수도 있다.


또한 매크로를 정의할 때 다른 매크로를 호출해서 정의할 수도 있다.



다음은 매크로의 work flow이다.

매크로 프로세서는 매크로 호출을 처리한다. 처리를 위해서는 호출된 매크로의
full code를 알아야 한다.

이를 위해서 매크로 프로세서는 매 코드마다 pass1, pass2 총 두 번의 탐색을 실행한다.

패스1에서는 매크로 정의 부분을 찾아 정의 내용을 매크로 정의표 MDT(Macro Definition Table)로 저장하고 이를 참조하여 MNT(Macro Name Table)를 작성한다

패스2에서는 매크로 호출을 찾고 MNT와 MDT를 참조하여 해당하는 명령어 블록으로 치환한다.



다음은 매크로 프로세서의 자료 구조인 형식 인수표, 실인수표, MDT, MNT의 예시이다.




profile
세상은 넓고 배울건 많다
post-custom-banner

0개의 댓글