この質問の読者。
私は組み立てが初めてではありません。しかし、私はMASMが初めてです。(実際、私は約 8 年間、単一のマクロを 1 分も使用せずに、ハードコアでクリーンなタスクを使用していました。
ここで、簡単なプログラムを作成する必要があります。私はすでにそれが主なロジックです。しかし、出力にはいくつかの問題があります。私が使うとき
output <some-variable-name>
それは物を作ります - それは文字を出力します。しかし今、変数の最初からではなく、メモリ内の特定のアドレスから出力を開始したいと考えています。今私がやります:
lea eax, <some-variable-name>
mov esi, eax
... manipulations with address in esi, like 'add esi, ebx' and so on...
output esi
しかし、それはうまくいきません。コンパイラは「エラー A2070: 命令オペランドが無効です」と表示します。Microsoft Macro Assembler バージョン 6.11 を使用しています。
前もって感謝します。壊れた英語で申し訳ありません。
UPD: 含まれている「io.h」ファイルから取得した「出力」マクロの定義:
output MACRO string,xtra ;; display string
IFB <string>
.ERR <missing operand in OUTPUT>
EXITM
ENDIF
IFNB <xtra>
.ERR <extra operand(s) in OUTPUT>
EXITM
ENDIF
push eax ;; save EAX
lea eax,string ;; string address
push eax ;; string parameter on stack
call outproc ;; call outproc(string)
pop eax ;; restore EAX
ENDM