2014-06-23 4 views
1

어셈블리에서 매크로로 매개 변수로 배열을 전달할 수 있습니까? 예를 들어, 배열을 매크로 어셈블리의 매개 변수로 전달

setXY macro temp[0], temp[1]  ; temp is word-sized 
    mov ax, temp[0] 
    mov bx, temp[1] 

어딘가에 몸에 당신은 setXY coor[0], coor[1] 전화 할게.

허용 되나요?

+0

"setXY coor [0], coor [1]'". 당신은'coor'가 무엇인지는 말하지 않았지만 배열 자체를 사용하는 것이 아니라 배열의 원소를 인자로 사용하고자하는 것처럼 보입니다. 어쨌든 배열은 배열이 시작되는 주소를 지정하는 레이블 일 뿐이므로 다른 데이터와 다르지 않습니다. 사용중인 어셈블러에 대해 언급하지 않았으므로 지금 당장 질문에 대한 답변을 얻지 못합니다. – Michael

+0

'coor '도 워드 크기의 배열입니다. 예, 배열 안의 요소를 사용하고 싶습니다. TASM 어셈블러를 사용하고 있습니다. – ellekaie

답변

1

다음과 같은 매크로가있는 경우 :

do_stuff MACRO x, y 
    mov ax,[x] 
    mov bx,[y] 
    add ax,bx 
ENDM 

그리고 단어의 배열을 :

coor dw 1, 3, 5, 7 

당신이 할 수있는 예 :

; Use the do_stuff macro with the first two elements of coor as 
; the arguments 

do_stuff coor, coor+2 

당신에게 줄 것 ax == 1 + 3 == 4.