2

純粋に好奇心から - 変数に「c」という名前を付けられないのはなぜですか? 例えば...

.386
.model  flat, stdcall
option  casemap:none

include windows.inc
include kernel32.inc
include user32.inc

includelib user32.lib
includelib kernel32.lib

Main        proto

.data

hOutput dd 0
hInput dd 0

bReadWritten dd 0
szText db "Program calculates the roots of the quadratic expression ax^2+bx+c",10,"Enter a",0 

a dd 0
b dd 0 
c dd 0

delta dd 0

szInput db 128 dup(0)



.data?

.code
start:

Invoke Main
Invoke ExitProcess,0

Main proc
    invoke GetStdHandle, STD_OUTPUT_HANDLE
    mov hOutput, eax

    invoke GetStdHandle,STD_INPUT_HANDLE
    mov hInput, eax

    invoke lstrlen, addr szText
    invoke WriteFile, hOutput, addr szText, eax, ADDR bReadWritten, NULL

    invoke ReadFile, hInput, a, eax,addr bReadWritten, NULL 
    invoke ReadFile, hInput, b, eax,addr bReadWritten, NULL 
    invoke ReadFile, hInput, c, eax,addr bReadWritten, NULL 

    invoke Sleep,10000

    ret
Main endp   


end start

...これにより、組み立て時のエラーが発生します

C:\サードパーティ プログラム\winASM\WinAsm\Projects\二次方程式\EXE.asm(24) : エラー A2008: 構文エラー : c
C:\サードパーティ プログラム\winASM\WinAsm\Projects\二次方程式\ EXE.asm(52): エラー A2008: 構文エラー: c

名前を変更すると、すべてが組み立てられ、正常に実行されます。

4

1 に答える 1

2

変数PASCALに 、FORTRANBASICSYSCALLまたはの名前を付けてみてくださいSTDCALL。同じエラーが発生すると思います。これらはすべて、前述の言語で記述されたプロシージャーを使用する場合に備えて、プロシージャーの呼び出し規則を指定するキーワードです。Cキーワードの有効な使用法は次のようになりますfuncname PROTO C arguments...

于 2012-06-15T17:47:08.750 に答える