0

この質問の読者。

私は組み立てが初めてではありません。しかし、私は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
4

1 に答える 1