매크로는 간단히 말해서 계속해서 반복적으로 사용되어지는 명령어를 정리해서 반복적으로 간단히 사용할 수 있도록 정의한 것입니다
원시프로그램은 매트로 프로세서를 거쳐서(그러면 확장된 매크로프로그램이 됩니다) 컴파일러, 어셈블러를 거쳐서 목적프로그램으로 변환되어집니다
TITLE PGM1_1: SAME PROGRAM
.MODEL SMALL
.STACK 100H
.DATA
A DW 100
B DW 20
SUM DW ?
.CODE
MAIN PROC
;initialize DS
MOV AX,@DATA
MOV DS,AX
;add the numbers
MOV AX,A ;AX has A
ADD AX,B ;AX has A+B
MOV SUM,AX ;SUM = A+B
;exit to DOS
MOV AX,4C00H
INT 21H
MAIN ENDP
END MAIN
이 프로그램은 그냥 어셈블리어 샘플 프로그래밍입니다
ADDATA MACRO
ADD AX, DATA //매크로정의
ADD BX, DATA
ADD CX, DATA
ENDM
MAIN SEGMENT
ASSUME CS:NAIN,DS:MAIN
MOV AX, MAIN
MOV DS, AX
...
ADDATA
ADDATA //매크로호출
MOV AH, 4CH
INT 21H
DATA DW 3
MAIN ENDS
END MAIN
ADD AX, DATA
MAIN SEGMENT
ASSUME CS:NAIN,DS:MAIN
MOV AX, MAIN
MOV DS, AX
...
ADDATA1 DATA1
ADDATA1 DATA2
MOV AH, 4CH
INT 21H
...
DATA1 DW 10
DATA2 DW 20
MAIN ENDS
ADDATA1 MACRO ARG
ADD AX, ARG
ADD BX, ARG
ADD CX, ARG
ENDM
END MAIN ADD BX, DATA
ADD CX, DATA
MOV AH, 위으4CH
INT 21H
MAIN SEGMENT
ASSUME CS:NAIN, DS:MAIN
...
MOV AX, MAIN
MOV DS, AX
...
ADD AX, DATA1
ADD BX, DATA1
ADD CX, DATA1
ADD AX, DATA2
ADD BX, DATA2
ADD CX, DATA2
MOV AH, 4CH
INT 21H
...
DATA1 DW 10
DATA1 DW 20
MAIN ENDS
END MAIN ...
DATA DW 3
MAIN ENDS
정의된 매크로 프로그램이 확장된 것입니다
ADD1 MACRO ARG
ADD AX, ARG
SHL AX, 1
ADD BX, AX
ENDM
ADDS MACRO ARG1, ARG2
ADD1 ARG1
ADD1 ARG2
ENDM
MAIN SEGMENT
ASSUME CS:NAIN,DS:MAIN
MOV AX, MAIN
MOV DS, AX
...
ADDS DATA1, DATA2
...
DATA1 DW 10
DATA2 DW 20
MAIN ENDS
END MAIN
가장 기본적인 매크로 정의가 이런 식으로 있다고 보았을 때
ADD1 MACRO ARG
ADD AX, ARG
SHL AX, 1
ADD BX, AX
ENDM
ADDS MACRO ARG1, ARG2
ADD1 ARG1
ADD1 ARG2
ENDM
MAIN SEGMENT
ASSUME CS:NAIN,DS:MAIN
MOV AX, MAIN
MOV DS, AX
...
ADDS DATA1, DATA2
...
DATA1 DW 10
DATA2 DW 20
MAIN ENDS
END MAIN
이건 1단계 매크로 확장입니다
ADD1 MACRO ARG
ADD AX, ARG
SHL AX, 1
ADD BX, AX
ENDM
ADDS MACRO ARG1, ARG2
ADD1 ARG1
ADD1 ARG2
ENDM
MAIN SEGMENT
ASSUME CS:NAIN,DS:MAIN
MOV AX, MAIN
MOV DS, AX
...
ADDS DATA1, DATA2
...
DATA1 DW 10
DATA2 DW 20
MAIN ENDS
END MAIN
이건 2단계 매크로 확장입니다
ADD1 MACRO ARG
ADD AX, ARG
SHL AX, 1
ADD BX, AX
ENDM
ADDS MACRO ARG1, ARG2
ADD1 ARG1
ADD1 ARG2
ENDM
MAIN SEGMENT
ASSUME CS:NAIN,DS:MAIN
MOV AX, MAIN
MOV DS, AX
...
ADDS DATA1, DATA2
...
DATA1 DW 10
DATA2 DW 20
MAIN ENDS
END MAIN
이건 3단계 매크로 확장입니다
이런 식으로 정의 인식, 정의 저장, 호출 인식, 확장과 인수 치환 등의 과정을 거쳐서 매크로가 활용되어집니다
그 중에서 정의 인식, 정의 저장은 1 – PASS PROCESSING 호출 인식, 확장과 인수 치환은 2 – PASS PROCESSING 에 속해서 총 두 가지 패스 알고리즘을 통해서 진행됩니다 그래서 이 과정을 이중패스알고리즘이라고 합니다
ADD1 MACRO ARG
ADD AX, ARG
SHL AX, 1
ADD BX, AX
ENDM
ADDS MACRO ARG1, ARG2
ADD1 ARG1
ADD1 ARG2
ENDM
MAIN SEGMENT
ASSUME CS:NAIN,DS:MAIN
MOV AX, MAIN
MOV DS, AX
...
ADDS DATA1, DATA2
...
DATA1 DW 10
DATA2 DW 20
MAIN ENDS
END MAIN
'컴퓨터과학' 카테고리의 다른 글
알파고는 계단을 걷지 못한다 (0) | 2018.11.14 |
---|---|
어셈블리어에 관한 통찰 (0) | 2018.10.08 |
간단한 데이터 압축 (0) | 2018.10.08 |
인공지능의 사기적인 능력 (0) | 2018.08.27 |
빅데이터 (0) | 2018.03.07 |