NASM マクロを作成します。divide は、任意のアドレッシング モードで符号なし整数を指定する 2 つの引数を持ちます。マクロは、最初の引数の上限を計算し、2 番目の引数で割って、結果をレジスタ edx に配置します。2 番目の引数が 0 (実行時にテストされる) の場合、結果は 0 になり、「ゼロで割る」というメッセージが stdout に出力されます。
これは私が書いたコードです。ラベルなしでこのコードを書く方法は? (位置はコードに依存しません)
%macro divide 2
section .rodata
LC1: DB "divide by zero ", 10, 0
section .text
mov eax, %1
mov ebx, %2
cmp ebx, 0 ; divide by zero
jne rest1
push LC1
call printf
add esp,4
mov edx, 0
jmp end1
rest1:
mov edx, 0
div ebx
add eax, edx
mov edx , eax ; the result should be in edx
end1:
%endmacro