MASM32 の print

MASM32を使ってみたのだが、printマクロ(?)はレジスタを書き換えるんだな。最初気付かなかったので何でエラーになるのかわからなかった。

; main.asm
    include \masm32\include\masm32rt.inc
    .data
      str1 db "hello world", 13, 10, 0
    .code
start:
    call main
    exit
main proc
    mov eax, OFFSET str1
    print eax
    print eax  ; エラー
    ret
main endp
end start

覚えたてのスタック使ってみるか。

mov eax, OFFSET str1
push eax
print eax
pop eax 
print eax

TeXと同じで、マクロが多用される環境は初心者にきびしいな。