これは、ローカル データをマクロに保存する方法です (TASM を使用します)。
locals LL
.model small
.stack 100h
.data
.code
exit proc
mov ax, 4C00h
int 21h
endp
printStr macro str
jmp LLcode
_str db str,'$'
LLcode:
push ax dx
mov dx, @code
mov ds, dx
mov dx, offset _str
mov ah, 9
int 21h
mov dx, @data
mov ds, dx
pop dx ax
endm
start:
printStr 'Hello world
call exit
end start
ただし、すべてのマクロで ds をコード セグメント アドレスに変更し、後でデータ セクション アドレスに戻す必要があります。これを行うより良い方法はありますか?または、誰もがそれを行う「標準的な」方法ですか?
それとも、これはより良い方法ですか?
push ax dx ds
mov dx, @code
mov ds, dx
mov dx, offset _str
mov ah, 9
int 21h
pop ds dx ax