#arrays #assembly #macros #parameters #x86-16
#массивы #сборка #макросы #параметры #x86-16
Вопрос:
Можно ли передать массив в качестве параметра в макросе в сборке? Например,
setXY macro temp[0], temp[1] ; temp is word-sized
mov ax, temp[0]
mov bx, temp[1]
и где — то в теле ты будешь звонить setXY coor[0], coor[1]
.
Допустимо ли это?
Комментарии:
1. »
setXY coor[0], coor[1]
«. Вы не сказали нам, чтоcoor
это такое, но мне кажется, что вы хотите использовать элементы массива в качестве аргументов, а не сам массив. В любом случае, массив — это просто метка, указывающая адрес, с которого начинается массив, поэтому он ничем не отличается от любых других данных. Вы не упомянули, какой ассемблер вы используете, поэтому я не вижу, как можно ответить на этот вопрос прямо сейчас.2.
coor
также является массивом размером с слово. Да, я хочу использовать элементы внутри массива. Я использую ассемблер TASM.
Ответ №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
.