1

BIOS割り込みを使用してキーボード入力を取得し、別のBIOS割り込みを使用して画面に出力するように設計されたアセンブリコードを作成しています。x86システム用のNASMコンパイラを使用しています。コードの19行目(アスタリスク(*)でマークされている)で、「オペコードとオペランドの無効な組み合わせ」エラーが発生しています。これは一般に構文エラーの数を表していることはわかっていますが、スキルレベルではできません。申し訳ありませんが、詳細を確認してください。私のコードチャンクは次のとおりです。


; ---------------------------------------------
; Get input (hangs on input and loops forever)
; ---------------------------------------------
GetInput:

XOR AH, AH ;AH = 0 for interrupt 16.0 INT 0x16 ;Fetch the next key pressed. MOV SI, keymap ;Set SI to the head pointer of the keymap ADD SI, AH ;Increase the pointer by the key number. *MOV AL, [SI] ;Load the returned key for printing. CALL PrintCharacter ;Print the key CALL GetInput ;Wait on the next key. RET

さらに情報が必要な場合はお知らせください。ありがとうございます。

4

1 に答える 1

1

あなたの間違いは一行前だと思います。次のように、x86で16ビットと8ビットのレジスタを混在させることはできません。

ADD SI, AH

AHを最初にAXにコピー(ゼロ拡張)するよりもSIにAHレジスタを追加する場合は、次のようになります。

MOVZX AX, AH
ADD   SI, AX
于 2012-06-11T16:33:00.527 に答える